JSFiddle - React, Tailwind, and code Playground
by drulia
HTML
<div id="content"></div>
<button id="button">Re-run</button>
JavaScript
var src = [];
var dst = [];
function copy1() {
var i = 512; // loops count
var j = 16384; // write start index
var k = 32768; // read start index
while (i--) { // loop unrolling
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
//8
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
//16
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
//24
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
dst[j++]=src[k++]; dst[j++]=src[k++];
//32
}
}
function copy2() {
var i = 16384; // loops count
var j = 16384; // write start index
var k = 32768; // read start index
while (i--) dst[j++]=src[k++];
}
function copy3() {
var i = 0x4000; // loops count
var j = 0x4000; // write start index
var k = 0x8000; // read start index
dst = dst.slice(0, j).concat(
src.slice(k, k+i),
dst.slice(j+i));
}
function calc() {
var el = document.getElementById('content'),
str = '';
src = [];
dst = [];
for (var i=0; i<0xFFFF; i++) src[i]=i;
for (var i=0; i<0xFFFF; i++) dst[i]=i;
var t1=new Date();
for (var i=0; i<1000; i++) copy1();
str += 'copy1: '+(new Date()-t1)+' ms.<br>';
var t1=new Date();
for (var i=0; i<1000; i++) copy2();
str += 'copy2: '+(new Date()-t1)+' ms.<br>';
var t1=new Date();
for (var i=0; i<1000; i++) copy3();
str += 'copy3: '+(new Date()-t1)+' ms.<br>';
el.innerHTML = str;
}
calc();
document.getElementById('button').addEventListener('click', function(e) { calc(); return false; })