Skip to content

Instantly share code, notes, and snippets.

@alexander-irbis
Last active August 29, 2015 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexander-irbis/1aa96c197f6528dff2af to your computer and use it in GitHub Desktop.
Save alexander-irbis/1aa96c197f6528dff2af to your computer and use it in GitHub Desktop.
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');
@alexander-irbis
Copy link
Author

Linux stalkyard 4.1.1-gentoo-r1 #1 SMP PREEMPT     Sun Jul 5 06:26:08 EEST 2015 x86_64 AMD Phenom(    tm) II X6 1055T Processor AuthenticAMD GNU/Linu    x


Firefox 39.0

test1 19.28 ms 5000000
test2 20.59 ms 5000000
test3 54.12 ms 5000000
test4 130.6 ms 5000000

diff1_2 1.1 times
diff2_3 2.6 times
diff3_4 2.4 times
diff1_3 2.8 times
diff2_4 6.3 times
diff1_4 6.8 times


Chrome 43.0.2357.132


test1 22.48 ms 5000000
test2 23.92 ms 5000000
test3 225.11 ms 5000000
test4 3493.37 ms 5000000
diff1_2 1.1 times
diff2_3 9.4 times
diff3_4 15.5 times
diff1_3 10 times
diff2_4 146 times
diff1_4 155.4 times

@Arekusei
Copy link

Arekusei 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