std.conv.to!string(float) Is too heavy

Stefan Koch uplink.coder at googlemail.com
Tue Oct 12 16:05:19 UTC 2021


On Tuesday, 12 October 2021 at 14:47:21 UTC, Hipreme wrote:
> I have wrote a simple hello world using std.conv:
>
>
> ```
> import std.conv:to;
> import std.stdio;
>
> export void MAIN(float b)
> {
> 	writeln("Hello World " ~ to!string(b));
> }
> ```
>
> Building that with dmd app.d -lib creates 500KB lib
> With `-g`, it goes up to 800KB
>
> Using ldc, the build time goes up by 2 times.
>
> if you simply change from `float b` to `int b`, the lib goes 
> down from 500KB to 60KB.
> The build times decreases by almost 10x (must check), but I can 
> feel that anyway.
>
> Using std.conv greatly degrades a modularized workflow, by 
> increasing a lot of build time and binary size. I needed 
> implementing my own to! function to get a much better build 
> time for my program.

`writeln` itself even for plain strings is already quite heavy.
I'd recommend using printf.

I also have a realtively lightweight `dtoa` function.
it's here:
https://raw.githubusercontent.com/UplinkCoder/fpconv/master/src/fpconv_ctfe.d


More information about the Digitalmars-d mailing list