On 4/5/12, lzzll <ownre...@gmail.com> wrote:
> I think the one of problems is to!string(int) too slow, snprintf
> will better.

Tables to the rescue:

__gshared string[int] table;
shared static this()
{
    foreach (i; 0 .. MAX_RANGE)
        table[i] = to!string(i);
}

Then use table[i] instead of to!string(i). Here's a comparison:

to!string:
---- test_dict -----
test dict set (1000000)...      1.281s
test dict get (1000000)...      1.047s
test dict clear (1000000)...    0.000s
---- test_list -----
test list set (1000000)...      0.125s
test list get (1000000)...      0.000s
test list each (1000000)...     0.000s
---- test_str -----
test str find (1000000)...      0.703s
test str replace (1000000)...   1.016s

table (http://pastebin.com/43Z4EwMj)
test dict set (1000000)...      0.891s
test dict get (1000000)...      0.109s
test dict clear (1000000)...    0.000s
---- test_list -----
test list set (1000000)...      0.078s
test list get (1000000)...      0.000s
test list each (1000000)...     0.000s
---- test_str -----
test str find (1000000)...      0.125s
test str replace (1000000)...   1.203s

But it seems the str replace test got slower even though all the other
tests got faster.

Reply via email to