让代码更有效率的方法

        老大总结的代码级提高代码执行效率需要注意的点,很值得和大家分享一下,在这儿也由衷地感谢下老大的总结和工作中的指导。大多数的点都在项目中验证过,比如对配置文件的遍历操作可以通过偏移量查找的方式优化,也有一些是常识,但可能并未引起大家注意,比如函数返回值不能是对象,必须是引用等。 

  1. 保证你的算法是否足够优化。在代码里经常要做的事情之一是匹配查找,比如查找本次请求对应的server IP地址、查找某个物品的属性值等等。查找算法里边有很多,最笨的是遍历,接下来有hash、红黑树等等,而最快的是按偏移量查找。常用的做法是通过数据结构设计的配合,尽量使用偏移量查找的方法。
  2. 函数返回的时候不要返回一个对象,这是C++编程里效率杀手,同时存在浅拷贝的问题。
  3. 函数的参数也不要是一个对象,这个做法同样是效率杀手,同时也存在浅拷贝的问题。
  4. 要尽量避免字符串操作,比如拼装字符串、字符串匹配、字符串查找等。字符串操作也是效率杀手。在数据结构设计上多花些信息,尽量让数据类型是整型。
  5. 尽量避免浮点运算,这也是效率杀手。在我们的应用场景里,很少是非要浮点型不可得。
  6. 虽然我们必须要纪录log,以便查找定位问题。但这并不代表可以随便打log,打log也是要消耗cpu的。不做不是必须要做的事情,是保证程序效率一个重要思想。
  7.  如果没有必要,尽量不做网络交互。网络交互会导致进程等待,这个等待时间对于cpu运算速度来讲实在是太漫长了。
  8. 对于配置文件解析,在程序初始化的时候只作一次就好了,千万不要把它放到程序的主循环里。配置文件变更频率很低,没必要每次都去读取。
  9. 所有的系统调用都是效率杀手。不要因为看起来只有一行代码就认为效率很高,每个系统调用的背后都是一个复杂的实现,而且系统调用要进行数据从用户态到内核态,再从内核态到用户太的数据拷贝。
  10. 尽量减少内存拷贝,内存拷贝也是比较耗cpu的。
  11. 对于时间准确性要求不高的地方,可以在每次请求开始的时候取一次当前时间记录下来,然后在整个会话里复用这个值。因为取时间的系统调用通常格外消耗cpu,所以能省则省。
  12. 千万不要把只需要初始化一次的操作放到程序的主循环里反复初始化。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏二进制文集

Java 与 C/C++ 的编译器对比

这两天重温了周志明的《深入理解Java虚拟机》第2版,发现第11章第4节关于 Java 编译器的内容写得太棒了~本文完全摘自《深入理解Java虚拟机》第2版 0...

1836
来自专栏韩伟的专栏

框架设计原则和规范(一)

此文是《.NET:框架设计原则、规范》的读书笔记,本文内容较多,共分九章,将分4天进行推送,今天推送1-3章。 1. 什么是好的框架 2. 框架设计...

4265
来自专栏蛋未明的专栏

[推荐]php编码规范

4154
来自专栏编程

编写高质量代码的思考

前言 最近在看《代码大全》,可以说是一本软件开发的百科全书,特别厚,但是干货也很多。平时写代码,代码规范是一个最低的要求(很多老代码连最低要求都达不到),为什么...

2436
来自专栏spring源码深度学习

设计模式——代码如若初相见

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

942
来自专栏Java技术栈

6 道 BATJ 必考的 Java 面试题

请对比 Exception 和 Error,另外,运行时异常与一般异常有什么区别?

1061
来自专栏精讲JAVA

Gof设计模式之七大设计原则(六)

前言 今天的设计原则重理论,举例子只能是文字形式,没法使用代码解释,希望大家可以多读几遍。真正体会到设计原则的好处。每一个设计原则,我都尽量用非...

21710
来自专栏马洪彪

spss C# 二次开发 学习笔记(二)——Spss以及统计术语解释(IT人眼中的统计术语)

针对客户需求,需要对一些数据做统计分析。统计分析的第一步,即为数据查询,查找出要统计分析的数据。 查询得出的是一个行列表格的结果集,行、列、表格等这些IT的数据...

2805
来自专栏PHP在线

PHP 代码规范简洁之道

原文出处: Scholer 1. 统一的编码规范 编码规范往简单说其实就是三个方面: 换行 空格 变量命名 放在 PHP 里面,还有一些附加的地方,比如关键字...

4056
来自专栏java一日一条

编写高质量代码的思考

最近在看《代码大全》,可以说是一本软件开发的百科全书,特别厚,但是干货也很多。平时写代码,代码规范是一个最低的要求(很多老代码连最低要求都达不到),为什么要这样...

992

扫码关注云+社区

领取腾讯云代金券