什么是可清除HAXE数组最高效的方法是什么?目前,我只是分配一个空数组变量。
我发现这个在互联网上:
public static function clear(arr:Array<Dynamic>) {
#if cpp
arr.splice(0, arr.length);
#else
untyped arr.length = 0;
#end
}
这是最好的办法吗?我所关心的两个目标,JS和CPP。
在大多数情况下,你可以简单地使用重新分配给一个空数组来清除阵列;如果参照数组是重要此仅成为问题。在这种情况下,你有什么效果很好。
这就是它的答案,但为了好奇,我决定尝试一些时间来清除阵列的方式。不幸的是,我没有用HAXE在一段时间有什么东西在我的电脑的配置必须有所改变,所以我只能编译成猫和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中最快的算法;这让我觉得有什么在那里发生。否则,该长度的方法是在支持它的平台好。
我的测试,以防万一有人想同行评议方法,也许尝试上比猫和HTML5等平台测试Github。