Created
April 7, 2015 21:04
-
-
Save kumavis/dbcdaf8a0c6813ef1bd8 to your computer and use it in GitHub Desktop.
binary buffer encoding perf test
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
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