Am 27.12.2013 12:02, schrieb bearophile:
Benjamin Thaut:
If you replace the default hash function D uses with the MurMur hash
function it brings it down even more to 8 seconds (29425713 ticks)
What compiler are you using? ldc2?
dmd 2.064.2
And is it a good idea to put MurMur in D?
I don't know about the properties of the MurMur hash function. I only
know that it is cheaper to compute then the hash function D uses. To
decide if it would be better then the currently choosen hash function, a
in depth analysis would be required.
50% find free entry in hashmap
21% parse uint
Perhaps the parse uint times can be improved. A lightly tested function
to try:
uint toUint(const(char)[] txt) pure nothrow {
auto p = txt.ptr;
const q = p + txt.length;
// Skip leading not-digits.
while (p < q && (*p < '0' || *p > '9'))
p++;
uint result = 0;
while (p < q && *p >= '0' && *p <= '9') {
result = (result * 10) + (*p - '0');
p++;
}
return result;
}
The way I parse the uint already looks that way. I'm not using std.conv
https://github.com/Ingrater/thBase/blob/master/src/thBase/conv.d#L22
Kind Regards
Benjamin Thaut