On Tuesday, 22 December 2015 at 20:52:07 UTC, rumbu wrote:
On Tuesday, 22 December 2015 at 19:45:46 UTC, Daniel Kozák
wrote:
V Tue, 22 Dec 2015 18:11:24 +0000
rumbu via Digitalmars-d-learn
<digitalmars-d-learn@puremagic.com>
napsáno:
On Tuesday, 22 December 2015 at 17:15:27 UTC, Andrew Chapman
wrote:
> Sorry if this is a silly question but is the to! method
> from the conv library the most efficient way of converting
> an integer value to a string?
>
> e.g.
> string s = to!string(100);
>
> I'm seeing a pretty dramatic slow down in my code when I
> use a conversion like this (when looped over 10 million
> iterations for benchmarking).
>
> Cheers!
Converting numbers to string involves the most expensive
known two operations : division and modulus by 10.
No, IIRC few months or maybe years I have optimize this so it
does not use division and modulus
It's using division and modulus, as expected:
https://github.com/D-Programming-Language/phobos/blob/master/std/conv.d#L5529
If the compiler is smart enough, maybe it will replace this by
well known multiplication trick.
Tested it, I was right:
No optimizations: two divisions, one for the modulus and one for
the division itself
Optimized: multiplication by 0xCCCCCCCD trick.
http://imgur.com/a/lHeHe