digitalmars.D - AAs and GC
- bearophile (26/26) Sep 10 2007 Hello, I think both D GC and AAs need more tuning, you can see it with t...
- Manfred Nowak (5/6) Sep 10 2007 ... under which target function? Seems that D currently takes the lead
Hello, I think both D GC and AAs need more tuning, you can see it with the following two tiny tests too, that compare two quite similar programs that use AAs, Python (Py 2.5 + Psyco 1.5.2 on Win) agaist D (DMD v1.020). On my old PC the Python code is faster: def main(): d = {} for i in xrange(500000): d["hello_" + str(i)] = i import psyco; psyco.full() main() import std.string; void main() { int[string] d; for(int i; i < 500_000; i++) d["hello_" ~ toString(i)] = i; } Now I know how to write a D program faster than that Python+Psyco one, but the code becomes hairy (the GC can be disabled in Python too): import std.c.stdio, std.gc; void main() { std.gc.disable(); uint[string] d; char[15] key = "hello_"; for(uint i; i < 500_000; i++) { auto nc = sprintf(key.ptr+6, "%d", i); d[key[0 .. 6+nc].dup] = i; } } Bye, bearophile
Sep 10 2007
bearophile wroteAAs need more tuning... under which target function? Seems that D currently takes the lead at about 100 reads for a newly generated element. Below 100 reads, especially with zero reads, D seems indeed to be slower. -manfred
Sep 10 2007