[Performance] std.conv.toInt is damn fast!
Bill Baxter
wbaxter at gmail.com
Sat Nov 11 13:49:52 PST 2006
Andrey Khropov wrote:
> Burton Radons wrote:
>
>
>>Use std.conv.toInt instead, although from the looks of the implementation,
>>that will be slightly slower as well.
>
>
> Thanks for the advice. As a matter of fact it is faster than C's atoi!
> And better handles errors (through exceptions)
>
> D-std.conv.toInt: 277 ms elapsed (mean).
> vs
> D-std.c.stdlib.atoi: 348 ms elapsed (mean).
>
> And it's really the fastest implementation among the different languages std
> libraries:
>
> Here is the list of results for different languages and implementations
> (all optimization options were turned to the maximum):
>
> 1) DMD 0.173 (toInt) - 0.277 sec
> 2) MinGW GCC 3.4.2 (atoi) - 0.345 sec
> 3) MS VC++ 8.0 (atoi) - 0.645 sec
> 4) C# on Mono 1.1.18 (int.Parse) - 1.023 sec
> 5) Java on HotSpot 1.5.0_08 (Integer.decode) - 1.796 sec (-server)
> 6) Java on JRockit 26.4.0 (Integer.decode) - 1.969 sec (-server, that's the
> mean for 5 runs, first run (when Jitting is performed) is 2.905 sec)
> 7) C# on .NET 2.0 (int.Parse) - 2.899 sec (haven't yet downloaded .NET 3.0)
> 8) CPython 2.4.2 + Psyco 1.5 (int()) - 5.406 sec
> 9) IronPython 1.0 on Mono 1.1.18 (int()) - 10.625 sec
> 10) IronPython 1.0 on .NET 2.0 (int()) - 10.685 sec
> 11) CPython 2.4.2 (int()) - 11.218 sec
> 12) MinGW GCC 3.4.2
> (boost 1.33.1::lexical_cast<int>) - 21.305 sec
> 13) MS VC++ 8.0
> (boost 1.33.1::lexical_cast<int>) - 51.700 sec (Yes, it's hard to believe
> but check yourself!)
>
> I actually cannot believe it, but D's std.conv.toInt is almost 100x faster than
> boost version!
>
Holy moly! Now that's dedication! You must really have a lot of
strings you need to convert to integers!
--bb
More information about the Digitalmars-d
mailing list