在 Haxe 中清除数组的最佳方法是什么?
目前我只是为变量分配一个空数组。
我在网上找到了这个:
public static function clear(arr:Array<Dynamic>) {
#if cpp
arr.splice(0, arr.length);
#else
untyped arr.length = 0;
#end
}
这是最好的方法吗?我关心两个目标,JS 和 CPP。
最佳答案
在大多数情况下,您可以简单地使用重新分配给空数组来清除数组;如果对数组的引用很重要,这只会成为问题。在这种情况下,你所拥有的效果很好。
这就是答案,但出于好奇,我决定尝试对清除数组的某些方法进行计时。不幸的是,我有一段时间没有使用 Haxe,而且我的计算机配置中的某些内容肯定发生了变化,因此我目前只能编译为 Neko 和 HTML5。无论如何,结果很有趣。
为了测试,我通过长度从 8 到 1048576 个整数的数组运行了四种不同的清除算法。算法如下:
拼接清除:
array.splice(0, array.length);
长度清除:
untyped array.length = 0;
分配清除:
array = [];
流行清除:
while (array.length > 0)
array.pop();
下面显示的所有时间代表执行相同操作一百万次所需的总时间。
在尼科:
在 HTML5 中:
这些测试在 64 位 Windows 7 机器和 Firefox 上运行。
我有点惊讶 while 循环方法是 javascript 中的禁食算法;这让我觉得那里正在发生一些事情。否则,长度方法在支持它的平台上很好。
我的测试在 Github以防有人想对这些方法进行同行评审,并可能在 Neko 和 HTML5 以外的平台上尝试测试。
关于haxe - 在 Haxe 中清除数组的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45324169/