Array.prototype.slice.call() vs [].slice.call() nested (v24)

Revision 24 of this benchmark created by Entoarox on


Description

caching the prototype lookup should be fastest... Would it be even faster if we cache the call too... (Seeing what happens if the native slice is replaced by the non-native one)

Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
  var items = [1, 2, 3, 4, 5],
      slice = Array.prototype.slice,
      _slice = [].slice,
  wslice = window.Array.prototype.slice;

function nonnative_slice(item, start){
  start = ~~start;
  var
    len = item.length, i, newArray;

  newArray = new Array(len - start);
  
  for (i = start; i < len; i++){
    newArray[i - start] = item[i];
  }
       
  return newArray;
}
Array.prototype.slice=nonnative_slice;
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Array.prototype.slice
Array.prototype.slice.call( items )
ready
[].slice
[].slice.call( items )
ready
cached prototype
slice.call(items);
ready
cached [].slice
_slice.call(items);
 
ready
Array().slice
Array().slice.call(items);
ready
window.Array
window.Array.prototype.slice.call(items);
ready
wslice cached
wslice.call( items );
ready
slice(0)
items.slice(0)
ready
non native slice
nonnative_slice(items);
ready

Revisions

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