Skip to content

Instantly share code, notes, and snippets.

@mourner
Created December 19, 2016 13:02
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 mourner/ce9d26f9d57b1015355dd05371933c00 to your computer and use it in GitHub Desktop.
Save mourner/ce9d26f9d57b1015355dd05371933c00 to your computer and use it in GitHub Desktop.
array vs typed array vs object for points
'use strict';
var v8 = require('v8');
var N = 1000000;
var values = [];
for (var i = 0; i < 2 * N; i++) values.push(Math.random());
var memStart = v8.getHeapStatistics().used_heap_size;
console.time('create');
var points = [];
for (i = 0; i < N; i++) {
var p = [
values[i * 2],
values[i * 2 + 1]
];
points.push(p);
}
console.timeEnd('create');
console.log('memory used: ' + (v8.getHeapStatistics().used_heap_size - memStart));
console.time('pow');
for (i = 0; i < N; i++) {
p = points[i];
p[0] = p[0] * p[0];
p[1] = p[1] * p[1];
}
console.timeEnd('pow');
'use strict';
var v8 = require('v8');
var N = 1000000;
var values = [];
for (var i = 0; i < 2 * N; i++) values.push(Math.random());
var memStart = v8.getHeapStatistics().used_heap_size;
console.time('create');
var points = [];
for (i = 0; i < N; i++) {
var p = {
x: values[i * 2],
y: values[i * 2 + 1]
};
points.push(p);
}
console.timeEnd('create');
console.log('memory used: ' + (v8.getHeapStatistics().used_heap_size - memStart));
console.time('pow');
for (i = 0; i < N; i++) {
p = points[i];
p.x = p.x * p.x;
p.y = p.y * p.y;
}
console.timeEnd('pow');
~/projects/point-test → node -v
v7.2.1
~/projects/point-test → node typed.js
create: 1647.736ms
memory used: 154543544
pow: 19.621ms
~/projects/point-test → node arr.js
create: 133.100ms
memory used: 68876040
pow: 43.794ms
~/projects/point-test → node obj.js
create: 156.931ms
memory used: 44730944
pow: 8.678ms
'use strict';
var v8 = require('v8');
var N = 1000000;
var values = [];
for (var i = 0; i < 2 * N; i++) values.push(Math.random());
var memStart = v8.getHeapStatistics().used_heap_size;
console.time('create');
var points = [];
for (i = 0; i < N; i++) {
var p = new Float64Array(2);
p[0] = values[i * 2];
p[1] = values[i * 2 + 1];
points.push(p);
}
console.timeEnd('create');
console.log('memory used: ' + (v8.getHeapStatistics().used_heap_size - memStart));
console.time('pow');
for (i = 0; i < N; i++) {
p = points[i];
p[0] = p[0] * p[0];
p[1] = p[1] * p[1];
}
console.timeEnd('pow');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment