代码最优化实例(推荐)
一路求学网 http://www.16qiuxue.com 阅览次数: 799次 08-24 17:03:24
标签:flash教程制作,flash动画教程,flash教程下载,http://www.16qiuxue.com
代码最优化实例(推荐),
第一种做法:
Webjx核心提示:今天在公司,一同事问了我一个问题,我想写一个方法,当接收到任意长度整型数值的时候,我如何只保留首位,其他位全部置为0呢。我思考了几秒钟:你可以先把整型参数用String强类型转换,看看字符串的长度,这样你就能根据长度得到首位的数字,后面再根据长度补零就行了
今天在公司,一同事问了我一个问题,我想写一个方法,当接收到任意长度整型数值的时候,我如何只保留首位,其他位全部置为0呢。我思考了几秒钟:你可以先把整型参数用String强类型转换,看看字符串的长度,这样你就能根据长度得到首位的数字,后面再根据长度补零就行了。这时他问道,可不可以不通过字符串转换,直接用整型来处理呢?于是我们开始研究:第一种做法:
function encoder(num:int):int{
var sNum:int = num;
var count:int = 0;
while(true){
count++;
sNum /= 10;
if (sNum < 10){
sNum = Math.floor(sNum);
break;
}
}
return decoder(sNum,count);
}
function decoder(num:int,step:int):int{
var _num:int = num;
for (var i:int = 0;i<step;i++){
_num *= 10;
}
return _num;
}
经过测试,这种做法是没有问题的,但是这是不是最好的方法呢,当然不是,因为Math.floor()的原因肯定会导致
效率下降一部分,有办法替换么,其实很简单,直接用int()转换一下就行了。这样是最优做法么,当然还不是,看看下面这段代码:
第二种做法:
function encoder(num:int):int{这段代码相信大家都能看懂,它的优化在哪呢?比之前少了一个循环,当然效率会大幅提升了。我们只需再添加一个变量作为被乘数,这样就减少了一个循环。这段代码基本已经是效率很高了,但其实如果你够细心的话,仍然可以再进行优化,就是这句:i=num/j;我们把它替换成i *= .1;为什么呢?因为在计算机内部,乘运算比除运算要快。让我们看一下测试结果吧:
var i:int=num;
var j:int=1;
while(i>10)
{
j*=10;
i=num/j;
}
return i*j;
}
(左边是乘运算,右边是除运算,单位:毫秒),代码最优化实例(推荐)
当循环100万次时:
1028 1070
1049 1065
1045 1063
1024 1074
当循环1000万次时:
10319 10784
10467 10625
上一篇:Flash轻松制作背景模糊动画
《代码最优化实例(推荐)》相关文章
- 代码最优化实例(推荐)
- › 代码最优化实例(推荐)
- 在百度中搜索相关文章:代码最优化实例(推荐)
- 在谷歌中搜索相关文章:代码最优化实例(推荐)
- 在soso中搜索相关文章:代码最优化实例(推荐)
- 在搜狗中搜索相关文章:代码最优化实例(推荐)
- tag: Flash教程,flash教程制作,flash动画教程,flash教程下载,平面设计教程 - Flash教程