Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
BigInt to BigEndian Bytes (extended by trincot)
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:145.0) Gecko/20100101 Firefox/145.0
Browser:
Firefox 145
Operating system:
Mac OS X 10.15
Device Platform:
Desktop
Date tested:
5 months ago
Test name
Executions per second
Loop ParseInt
4838594.0 Ops/sec
Loop Constructor
4593927.5 Ops/sec
DataView
3482705.8 Ops/sec
Direct Constructor
8822615.0 Ops/sec
Direct ParseInt
4661772.0 Ops/sec
Direct Constructor with split
35170820.0 Ops/sec
HTML Preparation code:
<!--your preparation HTML code goes here-->
Script Preparation code:
function bigIntToBigEndianBytesLoopParseInt(value) { const hex = value.toString(16).padStart(16, '0'); const bytes = new Uint8Array(8); for (let i = 0; i < 8; i++) { bytes[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16); } return bytes; } function bigIntToBigEndianBytesLoopConstructor(value) { const hex = value.toString(16).padStart(16, '0'); const bytes = new Uint8Array(8); for (let i = 0; i < 8; i++) { bytes[i] = Number(hex.slice(i * 2, i * 2 + 2), 16); } return bytes; } function bigIntToBigEndianBytesDataView(value) { const buf = new ArrayBuffer(8); const view = new DataView(buf); view.setBigUint64(0, value); return new Uint8Array(buf); } function bigIntToUint8ArrayDirectConstructor(value) { const result = new Uint8Array(8); result[7] = Number(value & 0xffn); result[6] = Number((value >> 8n) & 0xffn); result[5] = Number((value >> 16n) & 0xffn); result[4] = Number((value >> 24n) & 0xffn ); result[3] = Number((value >> 32n) & 0xffn); result[2] = Number((value >> 40n) & 0xffn); result[1] = Number((value >> 48n) & 0xffn); result[0] = Number((value >> 56n) & 0xffn); return result; } // Added by trincot: first split BigInt into two numbers (32 bit), then work with those only function bigIntToUint8ArrayDirectConstructor2(value) { const result = new Uint8Array(8); const low = Number(value & 0xffffffffn); const high = Number((value >> 32n) & 0xffffffffn); result[7] = low & 0xff; result[6] = (low >> 8) & 0xff; result[5] = (low >> 16) & 0xff; result[4] = (low >> 24) & 0xff; result[3] = high & 0xff; result[2] = (high >> 8) & 0xff; result[1] = (high >> 16) & 0xff; result[0] = (high >> 24) & 0xff; return result; } function bigIntToUint8ArrayDirectParseInt(value) { const result = new Uint8Array(8); result[7] = parseInt(value & 0xffn); result[6] = parseInt((value >> 8n) & 0xffn); result[5] = parseInt((value >> 16n) & 0xffn); result[4] = parseInt((value >> 24n) & 0xffn ); result[3] = parseInt((value >> 32n) & 0xffn); result[2] = parseInt((value >> 40n) & 0xffn); result[1] = parseInt((value >> 48n) & 0xffn); result[0] = parseInt((value >> 56n) & 0xffn); return result; }
Tests:
Loop ParseInt
bigIntToBigEndianBytesLoopParseInt(32149814014n)
Loop Constructor
bigIntToBigEndianBytesLoopConstructor(32149814014n)
DataView
bigIntToBigEndianBytesDataView(32149814014n)
Direct Constructor
bigIntToUint8ArrayDirectConstructor(32149814014n)
Direct ParseInt
bigIntToUint8ArrayDirectParseInt(32149814014n)
Direct Constructor with split
bigIntToUint8ArrayDirectConstructor2(32149814014n)