在AS3中,整数(ints)是否总是比数字/浮点数(Numbers/Floats)更快?

8

Flash在处理数据操作时,经常表现出非常不可预测的行为。我想知道是否除了需要精度的值之外,使用Numbers而不是ints是否有任何性能/内存优势。我听说Flash中的一些基本操作可能会多次转换这两种类型以解决表达式。我还听说,在运行时,Flash运行时实际上将ints映射到非精度Numbers/Floats。这些说法有哪些是真的?

2个回答

14

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

Jackson Dunstan对不同的AS3语言结构性能进行了很好的测试。当然,自己检查结果总是好的。从10.2性能系列中可以看出,随着每个新的Flash Player版本,他们会优化某些东西,但其他东西可能会变慢:1 2 3

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


0

使用int而不是Number并不能带来任何真正的性能优势。因此,如果您没有将变量用于循环索引或需要精确增量的事情等,那么Number就可以了。实际上,如果您得到一个无效的结果,Number可以是NaN,这是一个不错的好处。


虽然如此,您确实会获得内存优势 - int使用32位,而Number使用64位。 - weltraumpirat
此外,从您自己的链接来源中,这是senocular的回复:“+ - / *%都是数字操作。如果在int / uint上使用它们,Flash播放器将在后台将它们转换为数字,并在操作完成后重新转换为int / uint。 |&^ >> << >>>(位运算)保留播放器中的int / uint类型,并针对这些类型进行了优化。” - weltraumpirat
weltraumpirat,你需要使用大量的变量才能使int和number之间的两个字节的差异成为问题,但你当然是正确的。 :) - Almo
4
引用2006年的帖子并不妙。uint类型早已经不再缓慢,这个情况已经持续很久了。请不要散布错误信息。 - Valentin Simonov
好的观点。我做出了一个假设,认为这不会改变,但那确实是很长的时间。已编辑。 - Almo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接