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

Hipreme msnmancini at hotmail.com
Tue Oct 12 16:24:24 UTC 2021


On Tuesday, 12 October 2021 at 16:05:19 UTC, Stefan Koch wrote:
> 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

I'm not defending writeln (specially because in my code it causes 
1500KB increase, but I could not reproduce in a simple hello 
world that increase), but the problem seems that std.conv for 
floats seems to consistently do that


More information about the Digitalmars-d mailing list