栏目导航
热点推荐
- Photoshop鼠绘:人物五官画法的
- PhotoShop方便快捷的实用小技巧
- Photoshop教程:Ps计算选区调出
- 欣赏:设计灵感-泼溅效果实例
- FLASH代码最优化实例
- 制作Flash动画控制SWF大小的技巧
- Flash教程:全面掌握按钮相关内容
- Photoshop制作Apple风格的时间机
- PS照片合成:创意合成杯中世界
- 快速批量去除图片水印效果
- 几种图片的格式异同
- 简单就是美 Photoshop光线教程
阅览排行
FLASH代码最优化实例
www.jz123.cn 2009-08-14 来源: 动力男孩flash乐园 powerboy 我要投递新闻
今天在公司,一同事问了我一个问题,我想写一个方法,当接收到任意长度整型数值的时候,我如何只保留首位,其他位全部置为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{
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 |
1
上一篇:有趣的PNG优化 下一篇:Photoshop中创建金属文字效果