在AS3中,整数总是比数字/浮点数快吗?

时间:2012-03-01 22:29:09

标签: actionscript-3 flash

众所周知,Flash在处理数据时会以非常不可预测的方式运行。我很好奇,除了需要精度的值之外,如果使用Numbers而不是整数有任何性能/内存优势。我听说Flash中的一些基本操作可能会在两种类型之间转换多次以解析表达式。我还听说过,运行时的Flash运行时实际上会在运行时将int映射到非精度的Numbers / Floats。这是真的吗?

2 个答案:

答案 0 :(得分:14)

Flash运行时确实是一个黑暗的地方。

  • 正如您提到的AVM2 does convert big ints into Number
  • 整数是实际的。
  • And there's more stuff about ints
  • Uints曾经在循环BUT NOW THEY ARE NOT中使用缓慢(导致文章似乎是奇怪的字节码生成和JIT优化的组合)。
  • 数字在内存中占用更多空间,但与单个JPEG文件相比,这是nothing
  • 从逻辑上讲,在循环中使用uints会感觉更好。
  • 数字是浮点数,你必须小心比较它们。

Jackson Dunstan对不同AS3语言结构的表现做了很好的测试。当然,自己检查结果总是好的。从大约10.2的性能系列中,您可以看到,每个新的Flash Player版本都会优化某些内容,但其他内容可能会变慢:1 2 3

P.S。这个答案可能会很快变旧,并且可能会在几年之后被引用,这当然是错误的。

答案 1 :(得分:0)

使用int over Number,您无法获得任何真正的性能优势。因此,如果您没有将变量用于循环索引或需要精确增量的事物,那么Number就可以了。事实上,如果你得到一个无效的结果,一个数字可以是NaN,这是一个很好的好处。