Script Preparation code:
x
 
var i;
var r;
var v = 2 ** 16;
function test1() {
    for (i = 0; i < 1000; ++i) {
        r = Math.sqrt(v);
    }
}
function test2() {
    for (i = 0; i < 1000; ++i) {
        r = Q_rsqrt(v) * v;
    }
}
//Based on the fast inverse square root function
// https://en.wikipedia.org/wiki/Fast_inverse_square_root
// Some original comments preserved for humor value
// Designed to try to mimic the original as closely as possible
const bytes = new ArrayBuffer(Float32Array.BYTES_PER_ELEMENT);
const floatView = new Float32Array(bytes);
const intView = new Uint32Array(bytes);
const threehalfs = 1.5;
function Q_rsqrt(number) {
    const x2 = number * 0.5;
    floatView[0] = number;
    intView[0] = 0x5f3759df - (intView[0] >> 1);
    let y = floatView[0];
    y = y * (threehalfs - (x2 * y * y));
    return y;
}
Tests:
  • Math.sqrt

     
    test1();
  • Quakes fast inverse sqrt.

     
    test2();
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Math.sqrt
    Quakes fast inverse sqrt.

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 27 days ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
Firefox 136 on Windows
View result in a separate tab
Test name Executions per second
Math.sqrt 167047.0 Ops/sec
Quakes fast inverse sqrt. 63387.6 Ops/sec