Performance Test

HTML

<div id="results"></div>
<div id="items"></div>

CSS

#results {
    font:icon;
    font-size:11px;
}

.info {color:green;}
.error {color:red;}

JavaScript

var measure = (function() {
    var iterations = 10000,
        $results = $('#results');

    var count = 0;
    
    function log(msg) {
        console.log(msg);
        $results.append('<p class="info">' + ++count + '. ' + msg + '</p>');
    }

    function error(msg) {
        console.error(msg);
        $results.append('<p class="error">' + ++count + '. ' + msg + '</p>');
    }

    function measure(arg) {
        if ($.isArray(arg)) {
            measureMultiple(arg);
        } else if ($.isFunction(arg)) {
            measureOne(arg);
        }
    }
    
    function measureMultiple(funcs) {
        for (var i=0, len=funcs.length; i<len; ++i) {
            measureOne(funcs[i]);
        }
    }
    
    function measureOne(func) {
        var start, end, duration;

        try {
            start = new Date().getTime();
            for (var i = 0; i < iterations; ++i) {
                func();
            }
            end = new Date().getTime();

            duration = end - start;
            log(func.name + ' completed in ' + duration + ' ms.');
        } catch (err) {
            error(func.name + ' ' + err);
        }
    }

    return measure;
})();

$items = $('#items');

const COUNT = 7312;
let values = [], shifts = [];
for (let i = 0; i < COUNT; ++i) {
values.push(Math.random())
shifts.push(Math.round(Math.random()*300)-150)
}

const arrayBuffer = new ArrayBuffer(8),
      nativeFloat = new Float64Array(arrayBuffer),
      nativeUint16 = new Uint16Array(arrayBuffer);
function ldexp1( float, shiftCount )
{
    nativeFloat[0] = float;
    nativeUint16[3] += shiftCount << 4;
    return nativeFloat[0];
}
const dataView = new DataView(arrayBuffer);
function ldexp0( float, shiftCount )
{
    dataView.setFloat64(0,float);
    const lo16 = dataView.getUint16(0);
    dataView.setUint16( 0, lo16 + ( shiftCount << 4 ) );
    return dataView.getFloat64( 0 );
}

function ldexp2(float,shiftCount)
	{
  	return float * 2 ** shiftCount;
  }

function viaLdExp0()...