Uint8Array vs DataView vs JSON.stringify (v8)

Revision 8 of this benchmark created on


Preparation HTML

<script>
  var sets = 1;
  var set_size = 512;
  var len = sets * set_size;
  var obj = [];
  var utf8_encoder = new TextEncoder("utf-8");

  var a = new ArrayBuffer(len);
  var dv = new DataView(a);

  var b = new ArrayBuffer(len);
  var u8 = new Uint8Array(b);

  
  add_set(function (i) { return i; });
  add_set(function (i) { return String.fromCharCode(65 + i % 57); });

  console.log(obj);

  function add_set (callback) {
    ++sets;
    for (var i=0; i<set_size; ++i) {
      obj.push(callback(i));
    }
  }
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
DataView write
for (ii = 0; ii < obj.length; ++ii) {
  dv.setUint8(ii, utf8_encoder.encode(obj[ii]));
}
ready
Uint8 write
for (ii = 0; ii < obj.length; ++ii) {
  u8[ii] = utf8_encoder.encode(obj[ii]);
}
ready
DataView read
var sum=0;
for (ii = 0; ii < obj.length; ++ii) {
  sum += dv.getUint8(ii);
}
ready
Uint8 read
var sum=0;
for (ii = 0; ii < obj.length; ++ii) {
  sum += u8[ii];
}
ready
JSON stringify
JSON.stringify(obj);
ready

Revisions

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