博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
程序的性能优化之代码上的细节优化
阅读量:5093 次
发布时间:2019-06-13

本文共 602 字,大约阅读时间需要 2 分钟。

        第一,避免无故的函数调用和重复计算,看下面的代码:

        

for(int i=0;i

      由于字符串s的长度是固定的,对于第一个循环,每次循环都调用strlen计算一遍它的长度,strlen大概与字符串长度相关,那么这样写的后果就是循环的时间效率与字符串长度的平方相关!也就意味着看着单循环实际是双循环的尴尬境地。毫无疑问,这种写法不可以让人接受!

      对于第二个循环,把计算长度的代码提出来赋予一个临时变量,那么对于字符串的长度就只是计算了一遍而已,相比于上面的循环快了不止一星半点,事实证明效率至少提高了百分之六七十!

      对于第三个循环,这是进一步优化,由于字符串都是以'\0'结尾,所以没有必要计算长度,但是这一步的优化在效率上并没有显著提高(相比于第二个)。

      总结成一句话就是,绝不写重复计算的代码,绝不做无谓的重复的函数调用。

      第二,避免无味的存储器引用,接着看代码:

      

bool arraysum1(int a[],int l,int *ans){       if(l==0) return false;       for(int i=0;i

指针会导致频繁的存储器访问,因此arraysum1的时间效率要比arraysum2慢两到三个数量级!频繁的存储器访问非常的占用cpu时间,绝对是不好的习惯。

 

转载于:https://www.cnblogs.com/liboyan/p/4985092.html

你可能感兴趣的文章
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
测试计划
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>