Created
September 21, 2011 13:51
-
-
Save tshinnic/1232074 to your computer and use it in GitHub Desktop.
Crude benchmarking of node 0.5.x Array, Buffer, Uint8Array
This file contains hidden or 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
// 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); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Forgot a
}
at the very end.