在Haxe中清除阵列最有效的方法是什么? 目前我只是为变量分配一个空数组。
我在互联网上找到了这个:
public static function clear(arr:Array<Dynamic>) {
#if cpp
arr.splice(0, arr.length);
#else
untyped arr.length = 0;
#end
}
这是最好的方法吗?我关注两个目标,JS和CPP。
答案 0 :(得分:7)
在大多数情况下,您可以简单地使用重新分配到空数组来清除数组;如果对数组的引用很重要,这只会产生问题。在那种情况下,你所做的很好。
这就是答案,但出于好奇心,我决定尝试一些方法来清除数组。不幸的是,我有一段时间没有使用过Haxe,而且我的计算机配置中的某些东西必须已经改变,所以我现在只能编译为Neko和HTML5。无论如何,结果很有趣。
对于测试,我通过长度为8到1048576个整数的数组运行了四种不同的清晰算法。算法如下:
Splice Clear:
array.splice(0, array.length);
长度清除:
untyped array.length = 0;
作业明确:
array = [];
Pop Clear:
while (array.length > 0)
array.pop();
以下所示的所有时间均代表执行相同操作一百万次所需的总时间。
在Neko:
在HTML5中:
这些测试是在64位Windows 7计算机和Firefox上运行的。
我有点惊讶while循环方法是javascript中禁食的算法;它让我觉得那里正在发生一些事情。否则,长度方法在支持它的平台上很好。
我的测试是在Github,以防有人想要查看方法并尝试在Neko和HTML5以外的平台上进行测试。