var arr = [12,45,45,323,542,34 .....] 长度是10万上
每一项减去 7 得到一个新数组
用for 还是太慢, 而且是不是占用内存也大?不能用多线程
有没有什么二进制或者位操作之类的奇技淫巧 来瞬间处理这个数组
var arr = [12,45,45,323,542,34 .....] 长度是10万上
每一项减去 7 得到一个新数组
用for 还是太慢, 而且是不是占用内存也大?不能用多线程
有没有什么二进制或者位操作之类的奇技淫巧 来瞬间处理这个数组
1 回答2.9k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
1 回答1.6k 阅读
1.4k 阅读
1.4k 阅读
1k 阅读
875 阅读
x = new Array(150000);
的话,时间可能会减小到 5ms 以下;采用循环展开,一次读取多个数据,类似于这样写:
asmjs
,类型标注可以加快执行,配合二进制预先求出7
的补码将减法转为加法运算来加速,不过由于现代浏览器会采用类似分支预测的方式执行迭代,JS 进行纯数值的大规模迭代运算不会比asm
慢太多;WASM
,比asm
快,不过由于通信开销大(每个数据复制一遍,除非浏览器已经引入/恢复SharedArrayBuffer
),可能毫无优势,除非数据绝大部分生命周期都在WASM
里面。