Skip to content

Instantly share code, notes, and snippets.

@tshinnic
Created September 21, 2011 13:51
Show Gist options
  • Save tshinnic/1232074 to your computer and use it in GitHub Desktop.
Save tshinnic/1232074 to your computer and use it in GitHub Desktop.
Crude benchmarking of node 0.5.x Array, Buffer, Uint8Array
// Time a certain set of operations using Array, Buffer, Uint8Array
var classes_to_try = 'Array Buffer Uint8Array'.split(' ');
// Note that the "pool size" for Buffer is currently defaulted to 8192,
// so sizes under this will be satisfied using the pool slice method,
// but any size over this will go direct to SlowBuffer allocations.
var buffer_sizes = [100, 1000, 10000],
buffer_allocs = 10,
buffer_loops = 1000;
if (process.argv.length < 3) {
console.log('Usage: program loops_count reallocations_count sizes...');
}
if (process.argv.length >= 3 && process.argv[2]) {
buffer_loops = parseInt(process.argv[2]);
}
if (process.argv.length >= 4 && process.argv[3]) {
buffer_allocs = parseInt(process.argv[3]);
}
if (process.argv.length >= 5 && process.argv[4]) {
buffer_sizes = [];
for(var i = 4 ; i < process.argv.length; ++i) {
buffer_sizes.push(parseInt(process.argv[i]));
}
}
console.log('');
console.log('Loop repeats: ', buffer_loops);
console.log('Reallocations: ', buffer_allocs);
console.log('Buffer sizes: ', buffer_sizes);
console.log('');
for (var sizidx = 0; sizidx < buffer_sizes.length; ++sizidx) {
var buffer_size = buffer_sizes[sizidx];
for (var clsidx = 0; clsidx < classes_to_try.length ; ++clsidx) {
var class_name = classes_to_try[clsidx];
var class_ref = global[class_name];
var trial_name = ' Class: ' + class_name + ' Size: ' + buffer_size;
console.time(trial_name);
for (var bfrcnt = 0; bfrcnt < buffer_allocs ; ++bfrcnt) {
var buffer = new class_ref(buffer_size);
var bfrlen = buffer.length;
for (var loopcnt = 0; loopcnt < buffer_loops; ++loopcnt) {
for (var bfridx = 0; bfridx < bfrlen ; ++bfridx) {
buffer[bfridx] = bfridx;
}
for (var bfridx = 0; bfridx < bfrlen/2 ; ++bfridx) {
var t = buffer[bfridx];
buffer[bfridx] = buffer[bfrlen - bfridx - 1];
buffer[bfrlen - bfridx - 1] = t;
}
}
}
console.timeEnd(trial_name);
}
@trevnorris
Copy link

Forgot a } at the very end.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment