mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 14:18:42 +01:00
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.
20 lines
283 B
Python
20 lines
283 B
Python
from __future__ import print_function
|
|
|
|
import time
|
|
|
|
start = time.clock()
|
|
|
|
map = {}
|
|
|
|
for i in range(1, 2000001):
|
|
map[i] = i
|
|
|
|
sum = 0
|
|
for i in range(1, 2000001):
|
|
sum = sum + map[i]
|
|
print(sum)
|
|
|
|
for i in range(1, 2000001):
|
|
del map[i]
|
|
|
|
print("elapsed: " + str(time.clock() - start)) |