剑jian 发表于 2017-7-7 11:53:57

AS3游戏开发实用技巧汇总

谈到数学计算的优化,大家都会很自然地想到位运算,以求模(取余数)为例,如果除数是2的整数次方(即2,4,8,16,32.....这一系列的数),就可以用位运算代替%运算符,例如判断正整数n是否为2的倍数就可以这么写:


[*]if(n & 1 == 0)

复制代码


同理,求n除以4的余数也可以写成:


[*]n & 3

复制代码


以此类推,可得
n % 8 = n & 7
n % 16 = n & 15
n % 32 = n & 31
......

可见当除数为2的整数次方时,我们可通过以下公式求余数使其运算速度更快:

n % 除数 = n & (除数 - 1)

但如果除数不满足以上公式的条件,那就还得用回效率不高的%运算。

事实上,之所以效率不高,是因为这个取余运算相当强大,它甚至支持小数求模:


[*]trace(7.7 % 2.4); //返回0.5000000000000004(准确值为0.5,输出值最后面的4是精度损失的结果)

复制代码


而大多数情况下我们都不会用到小数,此时用%来计算就未免有点屈才了。为此,在确保被除数和除数都是正整数的情况下,iloveas给出一个通用的优化公式:

result = n - int(n / 除数) * 除数;
在iloveas的电脑上测试,此法的效率比%高出一倍左右,对于运算量大,运算频率也高的游戏来说,这样的优化效果已经很不错了。

diazynez 发表于 2017-7-7 12:03:02

顶      

茶与水 发表于 2017-7-22 14:24:34

顶            

厉害了 发表于 2017-7-22 15:46:19

顶!!!!!

帅比 发表于 2017-7-22 18:08:46

看不懂也顶

lkp 发表于 2017-7-22 18:15:56

dd

CAIHONGSHEN 发表于 2018-12-2 14:45:15

6666666666666666666

2420668824 发表于 2019-9-14 15:49:56

啊哈哈看不懂。。

3316891527 发表于 2020-12-23 05:13:27

6666666666666

2351 发表于 2021-6-14 14:10:32

6666666666666666666666
页: [1] 2
查看完整版本: AS3游戏开发实用技巧汇总