Convert byte array to hex string (v2)

Revision 2 of this benchmark created by 1Pupik1989 on


Setup

var byteArrayData = [],
      i = 0;
    while (i < 10000) {
      byteArrayData.push(Math.floor(Math.random() * 255));
      i++;
    }
    
    var hex_values = new Array();
    var a,b;
    var hex = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'];
    
    var v;
    
    for(a=0;a<16;a++){
      v = hex[a];
      
      for(b=0;b<16;b++){
        hex_values.push(v+''+hex[b]); 
      }
    }

Teardown


    byteArrayData = [];
  

Test runner

Ready to run.

Testing in
TestOps/sec
String length compare
var ret = "",
  i = 0,
  len = byteArrayData.length;
while (i < len) {
  var h = byteArrayData[i].toString(16);
  if (h.length < 2) {
    h = "0" + h;
  }
  ret += h;
  i++;
}
ready
Byte value compare inline.
var ret = "",
  i = 0,
  len = byteArrayData.length;
while (i < len) {
  var a = byteArrayData[i];
  var h = (a < 10 ? "0" : "") + a.toString(16);
  ret += h;
  i++;
}
ready
Byte value compare expanded
var ret = "",
  i = 0,
  len = byteArrayData.length;
while (i < len) {
  var a = byteArrayData[i];
  var h = a.toString(16);
  if (a < 10) {
    h = "0" + h;
  }
  ret += h;
  i++;
}
ready
Byte value compare dupe
var ret = "",
  i = 0,
  len = byteArrayData.length;
while (i < len) {
  var a = byteArrayData[i],
    h;
  if (a < 10) {
    h = "0" + a.toString(16);
  } else {
    h = a.toString(16);
  }
  ret += h;
  i++;
}
ready
high & low
var ret = '';
var value;

for(var i=0,length=byteArrayData.length;i<length;i++){
  value = byteArrayData[i];
  ret += (value >> 4).toString(16)+(value & 0xF).toString(16);
}
ready
high & low 2
var ret = '';
var value;

for(var i=0,length=byteArrayData.length;i<length;i++){
  ret += hex_values[byteArrayData[i]];
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.