1
0
forked from Mirror/wren
Files
wren/test/benchmark/map_numeric.lua
Robert Nystrom 2a1499b04b Fix horrendously bad bit hashing function.
hashBits() is used to generate a hash code from the same 64 bits used
to represent a Wren number as a double. When building a map containing
a large number of integer keys, it's important for this to do a good
job scattering the bits across the 32-bit key space.

Alas, it does not. Worse, the benchmark to test this happens to stop
just before the performance falls off a cliff, so this was easy to
overlook.

This replaces it with the hash function V8 uses, which has much better
performance across the numeric range.
2019-07-27 13:34:07 -07:00

20 lines
286 B
Lua

local start = os.clock()
local map = {}
for i = 1, 2000000 do
map[i] = i
end
local sum = 0
for i = 1, 2000000 do
sum = sum + map[i]
end
io.write(string.format("%d\n", sum))
for i = 1, 2000000 do
map[i] = nil
end
io.write(string.format("elapsed: %.8f\n", os.clock() - start))