digitalmars.D.announce - D for the Win
- Andrei (3/3) Aug 20 2014 stumbled on this blog post:
- anonymous (1/2) Aug 20 2014 as a German, O_O
- Walter Bright (3/5) Aug 20 2014 I'm not surprised that the German programming community has taken to D. ...
- anonymous (8/15) Aug 20 2014 No, no, "Dlang Dlang Über Alles" is a take on "Deutschland
- Paulo Pinto (6/21) Aug 20 2014 As a Portuguese living in Germany, I would say not everyone knows that
- ketmar via Digitalmars-d-announce (5/7) Aug 20 2014 On Thu, 21 Aug 2014 00:57:27 +0200
- Nick Sabalausky (4/17) Aug 21 2014 "Über Alles" always just makes me think of Hanzel und Gretyl:
- anonymous (4/6) Aug 21 2014 Certainly. As I said, from an Israeli it's probably benign. I
- ketmar via Digitalmars-d-announce (8/9) Aug 20 2014 On Wed, 20 Aug 2014 22:02:31 +0000
- anonymous (17/20) Aug 21 2014 I'm not offended.
- ketmar via Digitalmars-d-announce (39/43) Aug 21 2014 On Thu, 21 Aug 2014 11:48:32 +0000
- Dicebot (3/4) Aug 21 2014 Please, this is not important enough to argue here.
- ketmar via Digitalmars-d-announce (4/5) Aug 21 2014 On Thu, 21 Aug 2014 12:08:05 +0000
- deadalnix (4/8) Aug 22 2014 And fairly common.
- anonymous (10/29) Aug 21 2014 Yes, really.
- Gary Willoughby (1/1) Aug 21 2014 http://en.wikipedia.org/wiki/Godwin's_law
- eles (10/23) Aug 20 2014 While I agree with the historical significance, there are some
- Walter Bright (2/3) Aug 21 2014 I agree with Dicebot. Let's not go there.
- eles (3/10) Aug 20 2014 French must be such great fans of functional programming, on the
- Peter Alexander (2/2) Aug 20 2014 Ha, that opDollar thing in the HTML generator is the nastiest D
- Nick Sabalausky (6/8) Aug 21 2014 Yea, this *statement* really made me go o_O
- Ola Fosheim Gr (4/8) Aug 21 2014 Now the comma-operator has to stay because removing it is a
- ketmar via Digitalmars-d-announce (4/6) Aug 21 2014 On Thu, 21 Aug 2014 08:37:30 +0000
- Jacob Carlborg (4/6) Aug 21 2014 Isn't that multiple arguments to opIndex?
- Ola Fosheim Gr (3/4) Aug 21 2014 Probably, I was just trying to be funny :P
- Rory McGuire via Digitalmars-d-announce (4/8) Aug 21 2014 mm, yes I believe you are right.
- Rory McGuire via Digitalmars-d-announce (6/12) Aug 21 2014 What is really awesome about this is that his code actually worked, the
- ketmar via Digitalmars-d-announce (5/10) Aug 21 2014 On Thu, 21 Aug 2014 04:31:31 -0400
- Walter Bright (2/5) Aug 20 2014 http://www.reddit.com/r/programming/comments/2e49tm/d_for_the_win/
- bearophile (6/10) Aug 20 2014 Perhaps this is enough, and avoids one allocation:
- Adam D. Ruppe (1/1) Aug 23 2014 Author posted part 2 http://tomerfiliba.com/blog/dlang-part2/
- Andrej Mitrovic via Digitalmars-d-announce (4/5) Aug 23 2014 If I read that right it seems they're using D in his startup? Pretty
- Dicebot (8/9) Aug 23 2014 In reddit thread one of commenters complained about D performance
- Mike (4/15) Aug 23 2014 I believe that was previously discussed here:
- bearophile (7/9) Aug 24 2014 That benchmark found a small performance bug in ldc2, that I
- Jacob Carlborg (6/11) Aug 24 2014 The numbers in the benchmark has just been updated. DMD is behind C. GDC...
- Kagamin (2/5) Aug 24 2014 D and C versions use different random number generators.
- Mike (14/27) Aug 24 2014 I did some analysis to find out which changes made the
- ketmar via Digitalmars-d-announce (7/8) Aug 24 2014 On Sun, 24 Aug 2014 12:51:10 +0000
- ketmar via Digitalmars-d-announce (6/8) Aug 24 2014 On Sun, 24 Aug 2014 12:51:10 +0000
- Mike (36/44) Aug 24 2014 If I undo all of Edmund Smith's changes from today, use C's
- bearophile (5/9) Aug 24 2014 I don't agree, function attributes are not excessive, they are
- ketmar via Digitalmars-d-announce (7/7) Aug 24 2014 On Sun, 24 Aug 2014 13:44:07 +0000
- ketmar via Digitalmars-d-announce (23/23) Aug 24 2014 On Sun, 24 Aug 2014 13:44:07 +0000
- Mike (7/33) Aug 24 2014 I'm guessing the dependency is probably due to our
- Mike (2/6) Aug 24 2014 "dependency" --> "discrepancy"
- ketmar via Digitalmars-d-announce (5/6) Aug 24 2014 On Sun, 24 Aug 2014 14:09:02 +0000
- Iain Buclaw via Digitalmars-d-announce (11/19) Aug 24 2014 That's because floor isn't an intrinsic. The crippling speed issue was ...
- ketmar via Digitalmars-d-announce (6/8) Aug 24 2014 On Sun, 24 Aug 2014 16:16:43 +0100
- Iain Buclaw via Digitalmars-d-announce (6/13) Aug 24 2014 Inline is not quite correct. Floor is a function recognised by the
stumbled on this blog post: http://tomerfiliba.com/blog/dlang/ looked like something worth posting to r/programming, so I did
Aug 20 2014
On 8/20/2014 2:33 PM, anonymous wrote:I'm not surprised that the German programming community has taken to D. After all, German cars all have those "D" stickers on them :-)Dlang Dlang Über Allesas a German, O_O
Aug 20 2014
On Wednesday, 20 August 2014 at 21:43:26 UTC, Walter Bright wrote:On 8/20/2014 2:33 PM, anonymous wrote:No, no, "Dlang Dlang Über Alles" is a take on "Deutschland Deutschland über alles" (Germany Germany over everything), the first verse of the national anthem as sung in Nazi times. I was actually worried if the author is German. He's not, thankfully. He's from Israel. From a German author that would be an embracement of fascism. Coming from an Israeli, I don't really know where to put it, probably completely benign.I'm not surprised that the German programming community has taken to D. After all, German cars all have those "D" stickers on them :-)Dlang Dlang Über Allesas a German, O_O
Aug 20 2014
Am 21.08.2014 00:02, schrieb anonymous:On Wednesday, 20 August 2014 at 21:43:26 UTC, Walter Bright wrote:As a Portuguese living in Germany, I would say not everyone knows that outside Germany. Specially the younger generations, they just use it because it sounds cool. -- PauloOn 8/20/2014 2:33 PM, anonymous wrote:No, no, "Dlang Dlang Über Alles" is a take on "Deutschland Deutschland über alles" (Germany Germany over everything), the first verse of the national anthem as sung in Nazi times. I was actually worried if the author is German. He's not, thankfully. He's from Israel. From a German author that would be an embracement of fascism. Coming from an Israeli, I don't really know where to put it, probably completely benign.I'm not surprised that the German programming community has taken to D. After all, German cars all have those "D" stickers on them :-)Dlang Dlang Über Allesas a German, O_O
Aug 20 2014
On Thu, 21 Aug 2014 00:57:27 +0200 Paulo Pinto via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:Specially the younger generations, they just use it because it sounds cool.and fun. they don't fear that old dead dog anymore, they making fun of it.
Aug 20 2014
On 8/20/2014 6:57 PM, Paulo Pinto wrote:Am 21.08.2014 00:02, schrieb anonymous:"Über Alles" always just makes me think of Hanzel und Gretyl: http://en.wikipedia.org/wiki/%C3%9Cber_Alles_%28album%29 Gotta love tongue-in-cheek psuedo-German metal ;)No, no, "Dlang Dlang Über Alles" is a take on "Deutschland Deutschland über alles" (Germany Germany over everything), the first verse of the national anthem as sung in Nazi times. I was actually worried if the author is German. He's not, thankfully. He's from Israel. From a German author that would be an embracement of fascism. Coming from an Israeli, I don't really know where to put it, probably completely benign.As a Portuguese living in Germany, I would say not everyone knows that outside Germany. Specially the younger generations, they just use it because it sounds cool.
Aug 21 2014
On Wednesday, 20 August 2014 at 22:57:21 UTC, Paulo Pinto wrote:As a Portuguese living in Germany, I would say not everyone knows that outside Germany.Certainly. As I said, from an Israeli it's probably benign. I guess if aynthing, it's meant to be jokingly provoking towards Germans. I don't mind that at all.
Aug 21 2014
On Wed, 20 Aug 2014 22:02:31 +0000 anonymous via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:From a German author that would be an embracement of fascism.i always wonder how good people at finding various offences and fascims everywhere. i bet that such people are glad to censor Ha=C5=A1ek's "The Good Soldier =C5=A0vejk", 'cause "Ha=C5=A1ek makes fun of the great human tragedy: the w= ar!"
Aug 20 2014
On Thursday, 21 August 2014 at 01:51:11 UTC, ketmar via Digitalmars-d-announce wrote:i always wonder how good people at finding various offencesI'm not offended.and fascims everywhere.It's pretty much the Nazi anthem. It doesn't get much more fascist than that. Of course, someone can play with fascist phrases without being a fascist or promoting fascism. As I said, coming from an Israeli, it's probably benign. If the author was German, I'd feel uneasy about it. And don't tell me that Germans carelessly throwing around Nazi slogans isn't something to feel uneasy about. The NPD (Nazi party) is in two Landtagen (state parliaments).i bet that such people are glad to censorI'm not trying to censor anything. Neither am I convinced that banning Nazi symbols, songs, etc (as we do in Germany) is the right way to go. I think I'd rather have the Nazis wear Hakenkreuz armbands than other, obscure symbols that I can't identify. It's not like they stop existing when we ban their uniforms.
Aug 21 2014
On Thu, 21 Aug 2014 11:48:32 +0000 anonymous via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:It's pretty much the Nazi anthem.oh, really? let's see. current German anthem: Einigkeit und Recht und Freiheit f=C3=BCr das deutsche Vaterland! Danach lasst uns alle streben br=C3=BCderlich mit Herz und Hand! and so on. pretty innocent, right? ok, but this is only the 3rd verse of the song which begins with... oh, "Deutschland, Deutschland =C3=BCber alles". may i assume that all Germans are well-disgiused Nazis then? here is the full song, for your pleasure: Deutschland, Deutschland =C3=BCber alles, =C3=BCber alles in der Welt, wenn es stets zu Schutz und Trutze br=C3=BCderlich zusammenh=C3=A4lt. Von der Maas bis an die Memel, von der Etsch bis an den Belt, Deutschland, Deutschland =C3=BCber alles, =C3=BCber alles in der Welt! Deutsche Frauen, deutsche Treue, deutscher Wein und deutscher Sang sollen in der Welt behalten ihren alten sch=C3=B6nen Klang, uns zu edler Tat begeistern unser ganzes Leben lang. =E2=80=94 Deutsche Frauen, deutsche Treue, deutscher Wein und deutscher Sang! and now, German anthem! and the 3rd verse: Einigkeit und Recht und Freiheit f=C3=BCr das deutsche Vaterland! Danach lasst uns alle streben br=C3=BCderlich mit Herz und Hand! Einigkeit und Recht und Freiheit sind des Gl=C3=BCckes Unterpfand; bl=C3=BCh im Glanze dieses Gl=C3=BCckes, bl=C3=BChe, deutsches Vaterland.And don't tell me that Germans carelessly throwing around Nazi slogans isn't something to feel uneasy about.they not only "throwing", they still using part of that song as their anthem. besides, aren't your words racist?
Aug 21 2014
On Thursday, 21 August 2014 at 12:05:40 UTC, ketmar via Digitalmars-d-announce wrote:...Please, this is not important enough to argue here.
Aug 21 2014
On Thu, 21 Aug 2014 12:08:05 +0000 Dicebot via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:Please, this is not important enough to argue here.ah, excuse me. it's so easy to drag me into such talks... mea culpa.
Aug 21 2014
On Thursday, 21 August 2014 at 12:08:06 UTC, Dicebot wrote:On Thursday, 21 August 2014 at 12:05:40 UTC, ketmar via Digitalmars-d-announce wrote:And fairly common. The French one propose to use foreigner's blood to water the fields....Please, this is not important enough to argue here.
Aug 22 2014
On Thursday, 21 August 2014 at 12:05:40 UTC, ketmar via Digitalmars-d-announce wrote:On Thu, 21 Aug 2014 11:48:32 +0000 anonymous via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:Yes, really.It's pretty much the Nazi anthem.oh, really?let's see. current German anthem:[...]and so on. pretty innocent, right? ok, but this is only the 3rd verse of the song which begins with... oh, "Deutschland, Deutschland über alles". may i assume that all Germans are well-disgiused Nazis then?The current anthem is really only the third verse/stanza (I'm not sure about vocabulary). If a German sings the first and second, they are aware that they're singing the Nazi anthem.It's not the whole song that's associated with the Nazis, only the first and second stanzas.And don't tell me that Germans carelessly throwing around Nazi slogans isn't something to feel uneasy about.they not only "throwing", they still using part of that song as their anthem.besides, aren't your words racist?No.
Aug 21 2014
On Wednesday, 20 August 2014 at 22:02:31 UTC, anonymous wrote:On Wednesday, 20 August 2014 at 21:43:26 UTC, Walter Bright wrote:While I agree with the historical significance, there are some things to be straighten: 1) the song was used even before: it was the national anthem of the Weimar republic, the one that Nazi toppled 2) today, it's third stanza (the first one begins with "DDuA") is still the official anthem of Deutschland 3) there is no official interdiction of the first two stanzas, except that they are not really protected by the German law punishing offenses to the national symbols of GermanyOn 8/20/2014 2:33 PM, anonymous wrote:No, no, "Dlang Dlang Über Alles" is a take on "Deutschland Deutschland über alles" (Germany Germany over everything), the first verse of the national anthem as sung in Nazi times.I'm not surprised that the German programming community has taken to D. After all, German cars all have those "D" stickers on them :-)Dlang Dlang Über Allesas a German, O_O
Aug 20 2014
On 8/20/2014 3:02 PM, anonymous wrote:[...]I agree with Dicebot. Let's not go there.
Aug 21 2014
On Wednesday, 20 August 2014 at 21:43:26 UTC, Walter Bright wrote:On 8/20/2014 2:33 PM, anonymous wrote:French must be such great fans of functional programming, on theI'm not surprised that the German programming community has taken to D. After all, German cars all have those "D" stickers on them :-)Dlang Dlang Über Allesas a German, O_O
Aug 20 2014
Ha, that opDollar thing in the HTML generator is the nastiest D hack I've seen :-P
Aug 20 2014
On 8/20/2014 5:39 PM, Peter Alexander wrote:Ha, that opDollar thing in the HTML generator is the nastiest D hack I've seen :-PYea, this *statement* really made me go o_O link[$.rel = "foobar", $.type = "text/css"]; That's a lot of syntax abuse there! Still, if it works for him, great, who am I to complain? At the end of the day, it's just a tool.
Aug 21 2014
On Thursday, 21 August 2014 at 08:31:49 UTC, Nick Sabalausky wrote:link[$.rel = "foobar", $.type = "text/css"]; That's a lot of syntax abuse there! Still, if it works for him, great, who am I to complain? At the end of the day, it's just a tool.Now the comma-operator has to stay because removing it is a severe breaking change.
Aug 21 2014
On Thu, 21 Aug 2014 08:37:30 +0000 Ola Fosheim Gr via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:Now the comma-operator has to stay because removing it is a=20 severe breaking change.but we can abuse opIndex and/or opSlice too! ;-)
Aug 21 2014
On 21/08/14 10:37, Ola Fosheim Gr wrote:Now the comma-operator has to stay because removing it is a severe breaking change.Isn't that multiple arguments to opIndex? -- /Jacob Carlborg
Aug 21 2014
On Thursday, 21 August 2014 at 08:47:50 UTC, Jacob Carlborg wrote:Isn't that multiple arguments to opIndex?Probably, I was just trying to be funny :P There should be a tutorial "D for perl programmers of the 90s"...
Aug 21 2014
On Thu, Aug 21, 2014 at 10:47 AM, Jacob Carlborg via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:On 21/08/14 10:37, Ola Fosheim Gr wrote:Isn't that multiple arguments to opIndex? -- /Jacob Carlborgmm, yes I believe you are right. http://dlang.org/operatoroverloading.html#ArrayOps
Aug 21 2014
What is really awesome about this is that his code actually worked, the mixing of operator overloads, opDispatch and rarely used features(e.g. comma op). D has come a long way in the last decade. On Thu, Aug 21, 2014 at 10:40 AM, ketmar via Digitalmars-d-announce < digitalmars-d-announce puremagic.com> wrote:On Thu, 21 Aug 2014 08:37:30 +0000 Ola Fosheim Gr via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:Now the comma-operator has to stay because removing it is a severe breaking change.but we can abuse opIndex and/or opSlice too! ;-)
Aug 21 2014
On Thu, 21 Aug 2014 04:31:31 -0400 Nick Sabalausky via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:Yea, this *statement* really made me go o_O =20 link[$.rel =3D "foobar", $.type =3D "text/css"]; =20 That's a lot of syntax abuse there!but it's fun! we all used to think that "$ should mean 'length'" and he has no such mind frames. i like it. ;-)
Aug 21 2014
On 8/20/2014 2:21 PM, Andrei wrote:stumbled on this blog post: http://tomerfiliba.com/blog/dlang/ looked like something worth posting to r/programming, so I didhttp://www.reddit.com/r/programming/comments/2e49tm/d_for_the_win/
Aug 20 2014
Andrei:http://tomerfiliba.com/blog/dlang/struct PascalString { Field!ubyte length;Also see if UDAs plus compile-time introspection is helpful.auto stream = cast(ubyte[])"\x05helloXXXX".dup;Perhaps this is enough, and avoids one allocation: immutable stream = "\x05helloXXXX".representation; Bye, bearophile
Aug 20 2014
Author posted part 2 http://tomerfiliba.com/blog/dlang-part2/
Aug 23 2014
On 8/23/14, Adam D. Ruppe via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:Author posted part 2 http://tomerfiliba.com/blog/dlang-part2/If I read that right it seems they're using D in his startup? Pretty cool. A bit of googling reveals the company's name is "Weka.IO".
Aug 23 2014
On Saturday, 23 August 2014 at 16:28:33 UTC, Adam D. Ruppe wrote:Author posted part 2 http://tomerfiliba.com/blog/dlang-part2/In reddit thread one of commenters complained about D performance and linked this benchmark : https://github.com/nsf/pnoise I tried running it and don't see anything inherently wrong that may justify 3x-5x slowdowns compared to clang / gcc versions - however, it does plenty of floating point math I don't know performance implications of. Maybe someone else can have a look what can be a problem?
Aug 23 2014
On Sunday, 24 August 2014 at 02:19:18 UTC, Dicebot wrote:On Saturday, 23 August 2014 at 16:28:33 UTC, Adam D. Ruppe wrote:I believe that was previously discussed here: http://forum.dlang.org/post/lo19l7$n2a$1 digitalmars.com. MikeAuthor posted part 2 http://tomerfiliba.com/blog/dlang-part2/In reddit thread one of commenters complained about D performance and linked this benchmark : https://github.com/nsf/pnoise I tried running it and don't see anything inherently wrong that may justify 3x-5x slowdowns compared to clang / gcc versions - however, it does plenty of floating point math I don't know performance implications of. Maybe someone else can have a look what can be a problem?
Aug 23 2014
Dicebot:In reddit thread one of commenters complained about D performance and linked this benchmark :That benchmark found a small performance bug in ldc2, that I reported, but I think it's not yet fixed. Rust has fixed a different smaller performance bug uncovered by that benchmark. Bye, bearophile
Aug 24 2014
On 2014-08-24 10:53, bearophile wrote:Dicebot:The numbers in the benchmark has just been updated. DMD is behind C. GDC is the fastest of all and LDC is ahead of Clang but behind GCC. Seems pretty good to me. -- /Jacob CarlborgIn reddit thread one of commenters complained about D performance and linked this benchmark :That benchmark found a small performance bug in ldc2, that I reported, but I think it's not yet fixed.
Aug 24 2014
On Sunday, 24 August 2014 at 09:24:55 UTC, Jacob Carlborg wrote:The numbers in the benchmark has just been updated. DMD is behind C. GDC is the fastest of all and LDC is ahead of Clang but behind GCC. Seems pretty good to me.D and C versions use different random number generators.
Aug 24 2014
On Sunday, 24 August 2014 at 09:24:55 UTC, Jacob Carlborg wrote:On 2014-08-24 10:53, bearophile wrote:I did some analysis to find out which changes made the difference. Here's my result. 1. Disabling the GC - insignificant 2. Liberal use of `immutable` - insignificant 3. Decorating functions with trusted, safe, nothrow, pure - insignificant 4. Using C's random number generator for both D and C - insignificant 5. Using C's floor instead of D's floor. - very significant (why?) 6. This change (https://github.com/nsf/pnoise/commit/baadfe20c7ae6aa900cb0e4188aa9d20bea95918) - very significant. MikeDicebot:The numbers in the benchmark has just been updated. DMD is behind C. GDC is the fastest of all and LDC is ahead of Clang but behind GCC. Seems pretty good to me.In reddit thread one of commenters complained about D performance and linked this benchmark :That benchmark found a small performance bug in ldc2, that I reported, but I think it's not yet fixed.
Aug 24 2014
On Sun, 24 Aug 2014 12:51:10 +0000 Mike via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:5. Using C's floor instead of D's floor. - very significant (why?)gcc/clang inlines floorf(). gdc generates calls to floor() in both cases, C floor() is just faster. i.e. gdc fails to see that floor() can be converted to intrinsic. the same thing with DMD i believe.
Aug 24 2014
On Sun, 24 Aug 2014 12:51:10 +0000 Mike via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote: ps.6. This change=20 (https://github.com/nsf/pnoise/commit/baadfe20c7ae6aa900cb0e4188aa9d20bea=95918)=20 with GDC has no effect at all.
Aug 24 2014
On Sunday, 24 August 2014 at 13:13:58 UTC, ketmar via Digitalmars-d-announce wrote:On Sun, 24 Aug 2014 12:51:10 +0000 Mike via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote: ps.If I undo all of Edmund Smith's changes from today, use C's floor, and remove all the excessive function attributes, I get this http://dpaste.dzfl.pl/1b564efb423e === gcc -O3: 0.141484117 seconds time === D (dmd): 0.446634464 seconds time === D (ldc2): 0.191059330 seconds time === D (gdc): 0.226455762 seconds time function attributes, I get this: http://dpaste.dzfl.pl/f525adab909c === gcc -O3: 0.137815809 seconds time === D (dmd): 0.480525196 seconds time === D (ldc2): 0.139659135 seconds time === D (gdc): 0.131637220 seconds time Approaching twice as fast for GDC. That's significant to me. Also, all those optimization flags should already be on with -O3. Here are the flags I'm using: gcc -std=c99 -O3 -o bin_test_c_gcc test.c -lm dmd -ofbin_test_d_dmd -O -noboundscheck -inline -release test.d ldc2 -O3 -ofbin_test_d_ldc test.d -release gdc -O3 -o bin_test_d_gdc test.d -frelease Maybe I'll make a pull request for it. I don't think users should have to decorate their code like a Christmas tree and use a bunch of special compiler flags to get a well-behaved binary. Mike6. This change (https://github.com/nsf/pnoise/commit/baadfe20c7ae6aa900cb0e4188aa9d20bea95918)with GDC has no effect at all.
Aug 24 2014
Mike:function attributes,Maybe I'll make a pull request for it. I don't think users should have to decorate their code like a Christmas treeI don't agree, function attributes are not excessive, they are idiomatic in D. Bye, bearophile
Aug 24 2014
On Sun, 24 Aug 2014 13:44:07 +0000 Mike via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote: p.s. it's unfair to specify "-msse3 -mfpmath=3Dsse" for gcc and not for gdc. gdc can use this flags too! (yeah, the effect is great: sse3 variant is ~2.5 times faster).
Aug 24 2014
On Sun, 24 Aug 2014 13:44:07 +0000 Mike via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote: p.s. what i did is this: auto tm =3D Timer(); tm.start; foreach (; 0..100) { auto n2d =3D Noise2DContext(0); foreach (i; 0..100) { foreach (y; 0..256) { foreach (x; 0..256) { auto v =3D n2d.get(x * 0.1f, y * 0.1f) * 0.5f + 0.5f; pixels[y*256+x] =3D v; } } } } tm.stop; writeln(tm.toString); Timer is my simple timer class which uses MonoTime to measure intervals. and 57 seconds for variants without sse3 flags. ;-)
Aug 24 2014
On Sunday, 24 August 2014 at 14:04:22 UTC, ketmar via Digitalmars-d-announce wrote:On Sun, 24 Aug 2014 13:44:07 +0000 Mike via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote: p.s. what i did is this: auto tm = Timer(); tm.start; foreach (; 0..100) { auto n2d = Noise2DContext(0); foreach (i; 0..100) { foreach (y; 0..256) { foreach (x; 0..256) { auto v = n2d.get(x * 0.1f, y * 0.1f) * 0.5f + 0.5f; pixels[y*256+x] = v; } } } } tm.stop; writeln(tm.toString); Timer is my simple timer class which uses MonoTime to measure intervals. and 57 seconds for variants without sse3 flags. ;-)I'm guessing the dependency is probably due to our configure/build of GDC. I'm using Arch Linux 64's default GDC from their repository. Perhaps it's configured in a way that has these optimizations on by default. It probably should. Mike
Aug 24 2014
On Sunday, 24 August 2014 at 14:09:03 UTC, Mike wrote:I'm guessing the dependency is probably due to our configure/build of GDC. I'm using Arch Linux 64's default GDC from their repository. Perhaps it's configured in a way that has these optimizations on by default. It probably should."dependency" --> "discrepancy"
Aug 24 2014
On Sun, 24 Aug 2014 14:09:02 +0000 Mike via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:64's default GDCi think that 64-bit gcc/gdc turns sse optimisations on anyway, 'cause there is no x86_64-capable CPUs without sse. and i'm on x86 arch.
Aug 24 2014
On 24 Aug 2014 14:09, "ketmar via Digitalmars-d-announce" < digitalmars-d-announce puremagic.com> wrote:On Sun, 24 Aug 2014 12:51:10 +0000 Mike via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:That's because floor isn't an intrinsic. The crippling speed issue was the fact that floor computed and returned at real precision. On recent (sandybridge?) CPU's, it was found that x87 does more ill than good. So I changed it to a template in Phobos (and did some nice tidy ups in the process). This will be pulled down in the 2.066 merge. Speed improvements were discussed in the PR and in the original pnoise thread. Though it's very likely that a hand optimised SSE3 assembly implementation in C's mathlib might still be faster. Iain.5. Using C's floor instead of D's floor. - very significant (why?)gcc/clang inlines floorf(). gdc generates calls to floor() in both cases, C floor() is just faster. i.e. gdc fails to see that floor() can be converted to intrinsic. the same thing with DMD i believe.
Aug 24 2014
On Sun, 24 Aug 2014 16:16:43 +0100 Iain Buclaw via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:That's because floor isn't an intrinsic. The crippling speed issue was the fact that floor computed and returned at real precision.i'm testing on x86, and the difference between 'call floorf' and inlining is significant. gcc inlines floorf() call, and gdc does not. i don't know anything about x86_64 though.
Aug 24 2014
On 24 Aug 2014 16:26, "ketmar via Digitalmars-d-announce" < digitalmars-d-announce puremagic.com> wrote:On Sun, 24 Aug 2014 16:16:43 +0100 Iain Buclaw via Digitalmars-d-announce <digitalmars-d-announce puremagic.com> wrote:Inline is not quite correct. Floor is a function recognised by the compiler, so if the backend knows an instruction for it, it will favour that intrinsic over calling an external function. IainThat's because floor isn't an intrinsic. The crippling speed issue was the fact that floor computed and returned at real precision.i'm testing on x86, and the difference between 'call floorf' and inlining is significant. gcc inlines floorf() call, and gdc does not.
Aug 24 2014