通过循环展开,每次迭代将累加4个元素,减少了循环次数,从而减少了总的执行时间(单独使用这种优化方法,对浮点数累乘几乎没有提高,但是整数累乘得益于编译器的重关联代码变化会有大幅度提高)。
这种优化可以直接利用编译器完成,将优化level设定到较高,编译器会自动进行循环展开。使用gcc,可以显式使用-funroll-loops选项。
所谓循环就是指一系列重复的的 *** 作(有规律可循)for 循环 和do while循环都可以优化变成的代码;
我举个简单点的例子,比如你要把A1的值赋值给A2-A100中(当然这用不到VBA,我只是举个简单例子)
for i= 2 to 100 step 1
cells(i,1).value=cells(1,1).value
next i
这个就是for 循环
i=2
do while i<101
cells(i,1)=cells(1,1).value
i=i+1
loop
这个就是do while 循环
当然这是最简单的例子,真实的循环中一般都是伴随着各种参数 ,模块变量 循环的嵌套 判断的嵌套。总而言之循环就是对重复机械的动作进行优化的。
先尝试优化程序的时间复杂度,寻找更有效的算法
确保了算法复杂度在可接受范围之内后,开始进行常数优化,以下是Python优化的几个小技巧:
实测表明,for语句一般比while语句效率更高
同样实测表明,xrange一般比range要高效
如果要存储动态数据(即有可能频繁变动的数据)少用list和str,多用dict
实测表明,
两个str的连接效率从高到低+=,join,+
多个str的连接效率从高到低join,+=,+
尽可能使用列表解析表达式和生成器表达式代替循环一遍来构建list
避免使用global关键字,无论是从代码效率还是可移植性的方面考虑
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)