31 bit integers

Benchmark created by Kevin Gadd on


Description

In V8, integers over 31 bits are represented as floats.

Preparation HTML

<script type="text/javascript">
  var bits = [0];

  for (var i = 1; i < 34; i++)
    bits[i] = 1 << (i - 1);

  // These function calls prevent V8 from performing trivial optimizations
  //  that would otherwise hide the threshold
  var getBits = function (i) {
    return bits[i];
  };

  var subtract = function (lhs, rhs) { 
    return lhs - rhs;
  };

  var count = 5000;
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Subtract 30-bit integers
for (var i = 0, bitCount = 30; i < count; i++)
  if (subtract(getBits(bitCount), getBits(bitCount)) !== 0)
    throw new Error();
ready
Subtract 31-bit integers
for (var i = 0, bitCount = 31; i < count; i++)
  if (subtract(getBits(bitCount), getBits(bitCount)) !== 0)
    throw new Error();
ready
Subtract 32-bit integers
for (var i = 0, bitCount = 32; i < count; i++)
  if (subtract(getBits(bitCount), getBits(bitCount)) !== 0)
    throw new Error();
ready
Subtract 33-bit integers
for (var i = 0, bitCount = 33; i < count; i++)
  if (subtract(getBits(bitCount), getBits(bitCount)) !== 0)
    throw new Error();
ready

Revisions

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

  • Revision 1: published by Kevin Gadd on