Script Preparation code:
x
 
var i;
var r;
var v = 2 ** 16;
function test1() {
    for (i = 0; i < 100000; ++i) {
        r = Math.sqrt(v);
    }
}
function test2() {
    for (i = 0; i < 100000; ++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
function Q_rsqrt(number) {
    var i;
    var x2, y;
    const threehalfs = 1.5;
    x2 = number * 0.5;
    y = number;
    //evil floating bit level hacking
    var buf = new ArrayBuffer(4);
    (new Float32Array(buf))[0] = number;
    i = (new Uint32Array(buf))[0];
    i = (0x5f3759df - (i >> 1)); //What the fuck?
    (new Uint32Array(buf))[0] = i;
    y = (new Float32Array(buf))[0];
    y = y * (threehalfs - (x2 * y * y)); // 1st iteration
    //  y  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed
    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: 2 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36
Chrome 101 on Windows
View result in a separate tab
Test name Executions per second
Math.sqrt 28.5 Ops/sec
Quakes fast inverse sqrt. 6.2 Ops/sec