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; })