Optimized Fisher-Yates

JavaScript performance comparison

Test case created by Gavin Kistner

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  a = [];
  for (var i=1000;i--;) a[i]=i;
  
  

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
Guarded while
var tmp, current, top = a.length;

if(top) while(--top) {
  current = Math.floor(Math.random() * (top + 1));
  tmp = a[current];
  a[current] = a[top];
  a[top] = tmp;
}
pending…
Unguarded shift
for (var tmp, cur, top=a.length; top--;){
  cur = (Math.random() * (top + 1)) << 0;
  tmp = a[cur];
  a[cur] = a[top];
  a[top] = tmp;
}
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL.

0 Comments