Skip to content

Instantly share code, notes, and snippets.

@kumavis
Created April 7, 2015 21:04
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 kumavis/dbcdaf8a0c6813ef1bd8 to your computer and use it in GitHub Desktop.
Save kumavis/dbcdaf8a0c6813ef1bd8 to your computer and use it in GitHub Desktop.
binary buffer encoding perf test
console.log( 'encode hex: '+testN(encodeTest, getRandomBuffer, 'hex', 100000).toFixed(10) )
console.log( 'decode hex: '+testN(decodeTest, getRandomData, 'hex', 100000).toFixed(10) )
console.log( '--------------' )
console.log( 'encode utf8: '+testN(encodeTest, getRandomBuffer, 'utf8', 100000).toFixed(10) )
console.log( 'decode utf8: '+testN(decodeTest, getRandomData, 'utf8', 100000).toFixed(10) )
console.log( '--------------' )
console.log( 'encode base64: '+testN(encodeTest, getRandomBuffer, 'base64', 100000).toFixed(10) )
console.log( 'decode base64: '+testN(decodeTest, getRandomData, 'base64', 100000).toFixed(10) )
console.log( '--------------' )
console.log( 'encode json: '+testN(encodeJsonTest, getRandomBuffer, 'json', 100000).toFixed(10) )
console.log( 'decode json: '+testN(decodeJsonTest, getRandomJson, 'json', 100000).toFixed(10) )
// var testData = getRandomBuffer(32)
// var encoded = encodeTest(testData, 'utf8')
// console.log('utf8:', Buffer(encoded).length)
// var testData = getRandomBuffer(32)
// var encoded = encodeTest(testData, 'base64')
// console.log('base64:', Buffer(encoded).length)
function testN(test, generateData, encoding, count){
var testData = generateData(32, encoding)
var start = process.hrtime()
for (var i = 0; i<count; i++) {
test(testData, encoding)
}
var duration = process.hrtime(start)
var total = duration[0] + duration[1] * 1e-9
var average = total / count
return average
}
function encodeTest(testBuffer, encoding){
var output = testBuffer.toString(encoding)
return output
}
function decodeTest(testData, encoding){
var output = Buffer(testData, encoding)
return output
}
function getRandomBuffer (howMany) {
var fs= require('fs');
var bytes= new Buffer(howMany);
var fd= fs.openSync('/dev/random', 'r');
fs.readSync(fd, bytes, 0, howMany, null);
fs.closeSync(fd)
return bytes;
}
function getRandomData(howMany, encoding) {
return getRandomBuffer(howMany).toString(encoding)
}
// special tests for json
function encodeJsonTest(testBuffer){
var output = JSON.stringify(testBuffer)
return output
}
function decodeJsonTest(testData){
var output = JSON.parse(testData)
return output
}
function getRandomJson(howMany) {
return JSON.stringify(getRandomBuffer(howMany))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment