Last active
August 29, 2015 14:24
-
-
Save alexander-irbis/1aa96c197f6528dff2af to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function test1( n ) { | |
var obj = Object.create(null); | |
obj.a = 0; | |
for (var i = 0; i < n; i++) { | |
obj.a = obj.a + i % 2; | |
} | |
return obj.a; | |
} | |
function test2( n ) { | |
function Obj() { | |
var _a = 0; | |
return { | |
a: _a | |
} | |
} | |
var obj = new Obj(); | |
for (var i = 0; i < n; i++) { | |
obj.a = obj.a + i % 2; | |
} | |
return obj.a; | |
} | |
function test3( n ) { | |
function Obj() { | |
var _a = 0; | |
return { | |
get_a: function() { | |
return _a; | |
}, | |
set_a: function( v ) { | |
_a = v; | |
} | |
} | |
} | |
var obj = new Obj(); | |
for (var i = 0; i < n; i++) { | |
obj.set_a(obj.get_a() + i % 2); | |
} | |
return obj.get_a(); | |
} | |
function test4( n ) { | |
function Obj() { | |
var _a = 0; | |
return { | |
get a() { | |
return _a; | |
}, | |
set a( v ) { | |
_a = v; | |
} | |
} | |
} | |
var obj = new Obj(); | |
for (var i = 0; i < n; i++) { | |
obj.a = obj.a + i % 2; | |
} | |
return obj.a; | |
} | |
var start = window.performance.now(); | |
var res1 = test1(10000000) | |
var time1 = window.performance.now(); | |
var res2 = test2(10000000) | |
var time2 = window.performance.now(); | |
var res3 = test3(10000000) | |
var time3 = window.performance.now(); | |
var res4 = test4(10000000) | |
var time4 = window.performance.now(); | |
time4 = Math.round((time4 - time3) * 100) / 100; | |
time3 = Math.round((time3 - time2) * 100) / 100; | |
time2 = Math.round((time2 - time1) * 100) / 100; | |
time1 = Math.round((time1 - start) * 100) / 100; | |
var diff1_2 = Math.round(time2 / time1 * 10) / 10; | |
var diff2_3 = Math.round(time3 / time2 * 10) / 10; | |
var diff3_4 = Math.round(time4 / time3 * 10) / 10; | |
var diff1_3 = Math.round(time3 / time1 * 10) / 10; | |
var diff2_4 = Math.round(time4 / time2 * 10) / 10; | |
var diff1_4 = Math.round(time4 / time1 * 10) / 10; | |
console.log('test1', time1, 'ms', res1); | |
console.log('test2', time2, 'ms', res2); | |
console.log('test3', time3, 'ms', res3); | |
console.log('test4', time4, 'ms', res4); | |
console.log('diff1_2', diff1_2, 'times'); | |
console.log('diff2_3', diff2_3, 'times'); | |
console.log('diff3_4', diff3_4, 'times'); | |
console.log('diff1_3', diff1_3, 'times'); | |
console.log('diff2_4', diff2_4, 'times'); | |
console.log('diff1_4', diff1_4, 'times'); | |
Author
alexander-irbis
commented
Jul 8, 2015
Win7 x64 Intel i5-3210M
FF 39
"test1" 21.62 "ms" 5000000
"test2" 21.41 "ms" 5000000
"test3" 28.74 "ms" 5000000
"test4" 131.7 "ms" 5000000
"diff1_2" 1 "times"
"diff2_3" 1.3 "times"
"diff3_4" 4.6 "times"
"diff1_3" 1.3 "times"
"diff2_4" 6.2 "times"
"diff1_4" 6.1 "times"
FF 41
test1 25.8 ms 5000000
test2 24.42 ms 5000000
test3 73.56 ms 5000000
test4 72.81 ms 5000000
diff1_2 0.9 times
diff2_3 3 times
diff3_4 1 times
diff1_3 2.9 times
diff2_4 3 times
diff1_4 2.8 times
Vivaldi
test1 43.88 ms 5000000
test2 29.04 ms 5000000
test3 195.03 ms 5000000
test4 3155.24 ms 5000000
diff1_2 0.7 times
diff2_3 6.7 times
diff3_4 16.2 times
diff1_3 4.4 times
diff2_4 108.7 times
diff1_4 71.9 times
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment