优化程序性能常用的几种方法

优化程序性能常用的几种方法

掌握常用的高效的数据结构和算法。 至少要熟悉模板的使用。

消除循环的低效率, 尽量减少循环次数。 尽量不要在循环里 循环计算一些不会改变的值。

消除不必要的存储器引用。 尽量使用临时变量来暂存要多次使用的引用值,避免寻址开销。

防止寄存器溢出。 临时变量也并不是越多越好, 因为寄存器总是有限的,如果需要同时使用的临时变量数超过了可用的寄存器数量,编译器会把临时值存放到栈中。 一旦出现这种情况, 性能会急剧下降。(x86-64代码能够同时累积最多 12 个值, 而不会溢出任何寄存器。)

循环展开。 通俗的说就是利用分治的策略来减小循环的迭代次数。

提高并行性。 大多数情况下,程序的代码都不是按部就班的一步一步从上往下执行的, 它会适当的并行一些不相依赖的代码行。 所以尽量编写不相依赖的代码, 能够提高运行效率。

编写利于分支预测的代码。 在 CPU 执行分支时, 会预测程序朝哪一个分支方向执行。 如果预测错误会被罚时。

处理方法一般是

(1): 编写能被预测的分支。

(2):书写条件传送实现的代码, 不依赖分支预测。

利用存储器结构体系 :由于存储器山的存储器结构,利用了 时间局部性 和 空间局部性 的代码, 能极大的提高缓存命中, 从而使程序执行的更快。

多线程编程: 适当的应用多线程, 特别是多CPU的情况下, 程序的性能666的飞起。

多线程 + 线程池: 多线程的进阶版本。

参考资料:

*《深入理解计算机系统》

*《Java Web Programming》

相关推荐

王者荣耀rmb英雄(王者荣耀最厉害的英雄)
365BET导航

王者荣耀rmb英雄(王者荣耀最厉害的英雄)

📅 07-03 👁️ 524
龙的成语
office365无法登录激活

龙的成语

📅 07-03 👁️ 5302
ipad怎么登录网银
365bet投注盘口

ipad怎么登录网银

📅 07-09 👁️ 6557
Java自学需要学多久?学习路线是怎样的?别慌这里都整理好了
网站com/cn域名到期后,要多久才能重新注册
365bet投注盘口

网站com/cn域名到期后,要多久才能重新注册

📅 07-12 👁️ 2464
2025年 为什么找一个中国能用的VPN这么难?
office365无法登录激活

2025年 为什么找一个中国能用的VPN这么难?

📅 07-04 👁️ 2817