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

Jon*_*lap 8 flash actionscript-3

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

Val*_*nov 14

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

  • 正如您所提到的,AVM2 确实将大整数转换为数字.
  • 整数是实际的整数.
  • 有更多关于整数的东西.
  • Uints过去在循环中使用缓慢但现在它们不是(结果文章似乎是奇怪的字节码生成和JIT优化的组合).
  • 数字在内存中占用更多空间,但这nothing与甚至单个JPEG文件相比.
  • 逻辑上,uints在循环中使用感觉更好.
  • 数字是浮点数,你必须小心比较它们.

杰克逊邓斯坦对不同的AS3语言结构表现做了很好的测试.当然,自己检查结果总是好的.从大约10.2的性能系列中你可以看到,每个新的Flash Player版本都可以优化,但其他东西可能会变慢:1 2 3.

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