Re: Converting an integer to a string with std.format.

2019-01-07 Thread Per Nordlöw via Digitalmars-d-learn

On Monday, 7 January 2019 at 09:57:45 UTC, Daniel Kozak wrote:

I would go with std.conv.to or std.conv.text :)


The reason for not using std.conv.to is to prevent the extra 
allocation needed in code such as


sink.put(someIntegral.to!string)

instead of something like

sink.putIntegralAsString(someIntegral)

which should only extend the memory buffer of `sink` (via at most 
one allocation or reallocation).


Re: Converting an integer to a string with std.format.

2019-01-07 Thread Stefan Koch via Digitalmars-d-learn

On Sunday, 6 January 2019 at 21:53:31 UTC, Per Nordlöw wrote:
When converting a single integer to a string is `formatValue` 
preferred over `formattedWrite` in terms of compilation and 
run-time performance?


I've written my own itos function because using std.conv was too 
expensive.
see 
https://github.com/UplinkCoder/dmd/blob/newCTFE_reboot_20741/src/ctfe/bc_common.d#L95


if you do want to convert longs you'll need a bigger pow_table as 
well as a diffrent log10 function.


Re: Converting an integer to a string with std.format.

2019-01-07 Thread Vijay Nayar via Digitalmars-d-learn

On Sunday, 6 January 2019 at 21:53:31 UTC, Per Nordlöw wrote:
When converting a single integer to a string is `formatValue` 
preferred over `formattedWrite` in terms of compilation and 
run-time performance?


Also, if you do not need to write to a stream or a range and just 
need the value, `format("%s", value)` works as well as std.conv's 
`to!string(value)`.


But between the two functions, it seems that the only difference 
is that `formattedWrite` only accepts the exact values that go on 
the output range (such as an integer), and `formatValue` has 
extra logic to convert structs, classes, and unions into strings 
by calling their `toString()` method.


Converting an integer to a string with std.format.

2019-01-06 Thread Per Nordlöw via Digitalmars-d-learn
When converting a single integer to a string is `formatValue` 
preferred over `formattedWrite` in terms of compilation and 
run-time performance?