Javascript - 将数组部分复制到另一个数组的最快方法

标签 javascript arrays copy performance

我需要FAST 将一个数组的一部分复制到另一个数组中,替换它的旧值。

  • 不需要范围检查。
  • 要复制的项目数:16384
  • 数组只包含整数

基准代码: http://codebase.es/test/copytest.htm

这是我的方法:

  var i = 0x4000>>5; // loops count
  var j = 0x4000;    // write start index
  var k = 0x8000;    // 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
  }    

这能做得更快吗?

最佳答案

我不确定你的方法是否比这更快:

var i = 0x4000;     // loops count
var j = 0x4000;    // write start index
var k = 0x8000;    // read start index
while (i--) {      // loop unrolling
  dst[j++]=src[k++];
}

关于Javascript - 将数组部分复制到另一个数组的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1448943/

相关文章:

javascript - 将用户输入存储到 localStorage

javascript - 在不使用 JSON.parse 的情况下使用动态字段创建 JSON

php - 我如何将新的键值对推送到数组 php?

javascript - 如何在 JavaScript 中将字符串拆分为两个数组项?

c - 我怎样才能获得选定的文本

javascript - Lodash reduce with includes 或 orderBy iteratee 用例

Javascript将变量连接到url

java - Java中如何在数组中来回移动

C++,通过复制还是通过 const 引用,哪种参数样式更好?

Android导出没有root权限的联系人数据库