haxe - 在 Haxe 中清除数组的正确方法是什么?

标签 haxe

在 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();

下面显示的所有时间代表执行相同操作一百万次所需的总时间。

在尼科:
  • 拼接 : 0.51 秒
  • 长度 : 0.069 秒
  • 作业 : 0.34 秒
  • 流行 :0.071 到 0.179 秒(随着数组变大线性缩放)

  • 在 HTML5 中:
  • 拼接 : 0.29 秒
  • 长度 : 0.046 秒
  • 作业 : 0.032 秒
  • 流行 : 0.012 秒

  • 这些测试在 64 位 Windows 7 机器和 Firefox 上运行。

    我有点惊讶 while 循环方法是 javascript 中的禁食算法;这让我觉得那里正在发生一些事情。否则,长度方法在支持它的平台上很好。

    我的测试在 Github以防有人想对这些方法进行同行评审,并可能在 Neko 和 HTML5 以外的平台上尝试测试。

    关于haxe - 在 Haxe 中清除数组的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45324169/

    相关文章:

    node.js - haxe/flash : Capture webcam to disc with node. js - 可能吗?

    installation - haxelib 与 haxe 一起安装在自定义目录中

    haxe -lib nme ->/usr/local/bin/libneko.dylib : mach-o, 但架构错误

    c++ - 什么是 cppia 脚本?

    java - 在 Haxe 中与 Java 函数交互

    javascript - JS 库的 Haxe externs

    haxe - 哈克代表

    intellisense - FDT:5.5 中的 Haxe 项目是否具有对 AS3 和其他目标的完整代码完整智能感知支持?

    python - 为了使用编译后的 Haxe 对象,我的 Python 程序应该包含什么?

    Haxe CreateJS 加载外部 list 内容失败