gpt4 book ai didi

javascript - javascript中哪种存储和操作位域的方式最快? (200k+ 位)

转载 作者:行者123 更新时间:2023-11-29 17:19:30 25 4
gpt4 key购买 nike

我正在分析我打算在 Android (PhoneGap) 上的嵌入式浏览器上使用的 javascript 代码。

基本上我的计算需要一个非常大的位域(200k+ 位)。

我尝试将它们放入无符号整数数组中,每个项目存储 32 位 - 这确实减少了内存使用,但使执行时间急剧太慢(超过 30 秒用于简单的迭代和反转现代 PC 上位域中的所有位!)

比起我制作好的老式 bool 数组。这增加了内存使用量(但对于围绕我的代码的整个 PhoneGap 框架,它在 Android 上仍然小于 15 兆)。分析向我展示了我算法的初始步骤——将位域的所有元素设置为 1(简单的 for 循环)——花费了一半的执行时间(在 PC 上大约 1.5 秒,在 Android 上超过几分钟)。我可以重写我的代码,使默认值为 0 而不是 1(反转所有条件),但我仍然不知道如何快速将如此大的数组设置为 0。

编辑按要求添加我的代码:

var count = 200000;
var myArr = [];

myArr.length = count;
for(var i = 0; i < count ; i++)
myArr[i] = true;

有人可以告诉我如何清除非常大的数组,或者有没有更快的方法来存储和操作 javascript 中的大位域?

最佳答案

看看这是否是创建数组的更快方法:

var myArray = [true];
var desiredLength = 200000;
while (myArray.length < desiredLength) {
myArray = myArray.concat(myArray);
}
if (myArray.length > desiredLength) {
myArray.splice(desiredLength);
}

I've added a few more test cases to the jsperf page that Asad linked in his comment .到目前为止,在我的浏览器(Mac OS X 10.8.2 上的 Chrome 23.0.1271.101)中最快的是这个:

var count = 200000;
var myArr = [];
for (var i = 0; i < count; i++) {
myArr.push(true);
}

关于javascript - javascript中哪种存储和操作位域的方式最快? (200k+ 位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com