You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
function mapTest() {
var start = Timer.stamp();
var N = 1000000;
var map:Map<String, Int> = [];
for (i in 0...N){//set
map.set(i+'', i);
}
trace("1 step time:", Timer.stamp() - start);
for (key in map.keys()){//get
var a = map.get(key);
a++;
}
trace("2 step time:", Timer.stamp() - start);
for (i in 0...N){//remove
map.remove(i+'');
}
trace("total time:", Timer.stamp() - start);
}
And here are my results for N = 1 000 000:
1 step time: 0.400216579437256
2 step time: 0.55933403968811
total time: 20.15642786026
Hashlink:
1000 => total time: 0.000833272933959961
10000 => total time: 0.0115585327148438
100000 => total time: 0.325639247894287
1000000 => total time: 20.6692686080933
10000000 => total time: ???
the same code compiled for Javascript:
1000 => total time: 0.0005000000000000004
10000 => total time: 0.001600000001490104
100000 => total time: 0.015400000002235181
1000000 => total time: 0.16799999999999998
10000000 => total time: 2.606199999999255
Also I tried IntMaps they're faster at setting and getting but slower at removing.
Anyway set and get are also slow. Javascript completes the whole test 2 times faster than Hashlink only step 1.
The text was updated successfully, but these errors were encountered:
Thanks for the benchmark results, that's interesting indeed to see how both implementations are scaling wrt large number of elements. I think it would be better first to benchmark IntMaps to factor our String allocation and hashing, but I agree that the benchmark result might be related to the current implementation of maps, here: https://github.com/HaxeFoundation/hashlink/blob/master/src/std/maps.h
I wonder what kind of structure is used on JS VM and how it compares also in terms of memory usage.
Here is my test code:
And here are my results for N = 1 000 000:
1 step time: 0.400216579437256
2 step time: 0.55933403968811
total time: 20.15642786026
Hashlink:
1000 => total time: 0.000833272933959961
10000 => total time: 0.0115585327148438
100000 => total time: 0.325639247894287
1000000 => total time: 20.6692686080933
10000000 => total time: ???
the same code compiled for Javascript:
1000 => total time: 0.0005000000000000004
10000 => total time: 0.001600000001490104
100000 => total time: 0.015400000002235181
1000000 => total time: 0.16799999999999998
10000000 => total time: 2.606199999999255
Also I tried IntMaps they're faster at setting and getting but slower at removing.
Anyway set and get are also slow. Javascript completes the whole test 2 times faster than Hashlink only step 1.
The text was updated successfully, but these errors were encountered: