Actionscript 3 在AS3中,整数是否总是比数字/浮点数快?

Actionscript 3 在AS3中,整数是否总是比数字/浮点数快?,actionscript-3,flash,Actionscript 3,Flash,众所周知,在处理数据时,Flash的行为非常不可预测。我很好奇,除了需要精确的值之外,使用数字而不是整数是否还有任何性能/内存优势。我听说Flash中的一些基本操作可能会在两种类型之间多次转换以解析表达式。我还听说Flash runtime在运行时会将整数映射到非精确数字/浮点。这是真的吗?整数大于数字并不能带来任何真正的性能优势。所以,若你们并没有使用一个变量来处理循环索引或者需要精确增量的东西,那个么这个数字就可以了。事实上,如果你得到一个无效的结果,一个数字可能是NaN,这是一个很好的好处

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

整数大于数字并不能带来任何真正的性能优势。所以,若你们并没有使用一个变量来处理循环索引或者需要精确增量的东西,那个么这个数字就可以了。事实上,如果你得到一个无效的结果,一个数字可能是NaN,这是一个很好的好处。

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

  • 正如你提到的AVM2
  • 整数实际上是整数
  • UINT过去在循环中的使用速度很慢(本文中的结果似乎是奇怪的字节码生成和JIT优化的结合)
  • 数字占用了更多的内存空间,但与单个JPEG文件相比,这算不上什么
  • 从逻辑上讲,在循环中使用
    uint
    感觉更好
  • 数字是浮点错误,你必须小心比较它们
Jackson Dunstan对不同AS3语言结构的性能进行了相当好的测试。当然,自己检查结果总是好的。从关于10.2性能的系列文章中,您可以看到,每一个新的Flash Player版本都会对某些方面进行优化,但其他方面可能会变慢:


注:这个答案可能很快就会过时,几年后可能会被引用,这当然是错误的。

好吧,你确实可以获得内存优势——一个int使用32位,一个数字使用64位。另外,从你自己的链接来源来看,这是senoculars的回复:“
+-/*%
都是数字运算。如果在int/uint上使用,它们将由Flash播放器在后台转换为一个数字,并在操作完成后重铸回int/uint<代码>|和^>>>(bitwize)在播放器中保留int/uint类型,并针对这些类型进行优化。“weltraumpirat,int和number之间的两个字节差异是一个问题,您必须使用许多变量,但您当然是正确的。”很好,引用了2006年的一篇帖子。由于。。。从永远开始。请不要散布错误的信息,说得好。我做出的假设不会改变,但那是一段很长的时间。编辑。