• as3效率优化


    记一些以后会用到的tips,关于效率比较测试请看上面的文章。


    1.a += b 要比 a = a + b 快,同样,自增a++也比a = a + 1快,不过自减a–不是比a=a-1快。


    2.在做除以2操作时,乘法比除法快,位运算更快. 但是不要位运算来操作Number类型的变量,因为它会将Number类型的数值转为整数类型。

    for Int : a = b >>1 faster than a = b *.5 faster than a = b /2 ;
    for Number : a = b *.5 faster than a = b /2 ;


    3.取整操作时,用unit()或int()比用Math.floor()和Math.ceil()要快,其中用uint(n) 比Math.floor(n)要快10倍.
    比如var test:uint = uint(1.5);要比var test:Number = Math.floor(1.5);快,而 var test:uint = uint(1.5)+1;要比var test:Number = Math.ceil(1.5);也快。
    如果是 Math.floor(),用位运算(>>0) 比unit() 或int()更快。


    4.取绝对值时,*-1 比 Math.abs要快.如var test:Number = n < 0 ? n * -1 : n;快于var test:Number = Math.abs(n);


    5.n+n比n*2快。


    6。Math.sqrt()的替代算法.

    function sqrt(w:Number):Number
    {
        var thresh:Number 
    = .00001;
        var b:Number 
    = w * 0.25,a:Number,c:Number;
        
    do
        {
            c 
    = w / b;
            b 
    = (b + c) * 0.5;
            a 
    = b - c;
            
    if (a &lt; 0)
            {
                a 
    = -a;
            }
        }
        
    while (a&gt; thresh);
            
    return b;
    }

    作者的测试数据表明这个算法比较快一点。

    Actual value = 12.136309158883519
    Testing threshold: 0.00001
    Number of iterations for approximation: 6
    Approximation: 12.13630915888352
    Error in approximation: 1.7763568394002505e-15
    - - - -
    Math.sqrt - Mean over 20 loops
    Math.sqrt() Test172.05
    Approximation Test134.8
    Empty Test4.05
    Net timing results:
    Math.sqrt() Test: 168
    Approximation Test: 130.75

    可我copy了测试code,在自己电脑测试数据确反应这个算法是慢的。

    Actual value = 12.136309158883519
    Testing threshold: 0.00001
    Number of iterations for approximation: 6
    Approximation: 12.13630915888352
    Error in approximation: 1.7763568394002505e-15
    - - - -
    Math.sqrt - Mean over 20 loops
    Math.sqrt() Test199.55
    Approximation Test210.3
    Empty Test4.9
    Net timing results:
    Math.sqrt() Test: 194.65
    Approximation Test: 205.4
  • 相关阅读:
    Android Static分析
    hdoj 1285 确定比赛名次 【拓扑排序】
    Sqoop2安装记录
    Activiti源代码分析
    SpringBoard 无法启动应用程序(错误:-3)
    关于public、private、protected、internal
    Java基础——Statement与PrepareStatement
    无password身份验证:安全、简单且部署高速
    说说Linux文件权限那些事儿
    Android中Service概述
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1606277.html
Copyright © 2020-2023  润新知