Flash在处理数据操作时,经常表现出非常不可预测的行为。我想知道是否除了需要精度的值之外,使用Numbers而不是ints是否有任何性能/内存优势。我听说Flash中的一些基本操作可能会多次转换这两种类型以解决表达式。我还听说,在运行时,Flash运行时实际上将ints映射到非精度Numbers/Floats。这些说法有哪些是真的?
Flash在处理数据操作时,经常表现出非常不可预测的行为。我想知道是否除了需要精度的值之外,使用Numbers而不是ints是否有任何性能/内存优势。我听说Flash中的一些基本操作可能会多次转换这两种类型以解决表达式。我还听说,在运行时,Flash运行时实际上将ints映射到非精度Numbers/Floats。这些说法有哪些是真的?
Flash运行时确实是一个黑暗的地方。
微不足道
的。uints
更好。Jackson Dunstan对不同的AS3语言结构性能进行了很好的测试。当然,自己检查结果总是好的。从10.2性能系列中可以看出,随着每个新的Flash Player版本,他们会优化某些东西,但其他东西可能会变慢:1 2 3。
附注:这个答案很快就会过时,而且在几年后可能会被引用,当然也是错误的。
使用int而不是Number并不能带来任何真正的性能优势。因此,如果您没有将变量用于循环索引或需要精确增量的事情等,那么Number就可以了。实际上,如果您得到一个无效的结果,Number可以是NaN,这是一个不错的好处。
+ - / *%
都是数字操作。如果在int / uint上使用它们,Flash播放器将在后台将它们转换为数字,并在操作完成后重新转换为int / uint。|&^ >> << >>>
(位运算)保留播放器中的int / uint类型,并针对这些类型进行了优化。” - weltraumpirat