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



<font size = 4; background-color: #fffefb;>

The biggest speedup you’ll ever get with a program will be when you first get it working.

你能获得的对程序最大的加速比就是当你第一次让它工作起来的时候。

—John K. Ousterhout



存储器山

存储器山




  • 当然, 一个程序首先要能运行起来。 即使是姿势再丑, 再笨拙,再怎么屌丝, 先让程序无bug的跑起来再说。

  • 选择一组合适的算法和数据结构。算法和数据结构是程序的灵魂

  • 编写出编译器能够有效优化以转换成高效可执行代码的源代码。 对于这一点, 理解编译器的一些基本能力, 特性以及局限性真的很总要。 编写程序方式中看上去只是一点小小的变动, 都会引起编译器优化方式很大的变化。 由于编译器原理很复杂, 各个编译器, 以及优化层次选择的不同, 优化方式可能有很大的变化。 所以,想要编写出精致高效的代码, 良好的风格以及不断的经验积累才是王道。

  • 针对处理运算量特别大的计算, 将一个任务分成多个部分, 这些部分可以在多核和多处理器的某种组合上并行的计算---- 多线程并行算法

程序员必须在实现和维护程序的简单性与它的运行速度之间做出权衡。



这就是性能


这就是性能!




具体方法


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

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

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

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

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

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

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


    处理方法一般是


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


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



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

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

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

  • 参考资料:

    《深入理解计算机系统》

    《Java Web Programming》










转载于:https://www.cnblogs.com/acm1314/p/5456800.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
业务流程优化常用方法: BPR的几种经典方法 按照BPR创始人美国哈佛大学博士Michael Hammer教授的定义,BPR是“追求业务流程变革的根本性和彻底性,希望取得成本、质量、服务和速度方面的显著性改善”,后来经过了不同学者的补充、完善,这种比较激进的管理理念逐渐变得内涵丰富。目前BPR的基本内涵是以流程运作为中心,摆脱传统组织分工的束缚,提倡面向客户、组织变通、员工授权及正确地运用信息技术,达到快速适应市场变化的目的,包括不同程度的业务提升、业务优化、业务改造 BPR是业务流程重组Business Process Reengineering的缩写。它的定义有几种,其中广为人知的是它的奠基人Michael Hammer和James Champy的定义:“BPR是对企业的业务流程作根本性的思考和彻底重建,其目的是在成本、质量、服务和速度等方面取得显著的改善,使得企业能最大限度地适应以顾客(Customer)、竞争(Competition)、变化(Change)为特征的现代企业经营环境”。在这个定义中,“根本性”、“彻底性”、“显著性”是应关注的核心内 对于一个企业来说,BPR是一个重大而复杂的系统工程,在项目实施过程中涉及到多方面的活动和工作。参与企业信息化的成员在整个BPR过程中,不但应当知道如何进行BPR,由谁来进行BPR,而且还需要了解一些进行BPR的方法和工具。参加BPR的成员们如果能够有效地利用现代的BPR工具,就可以更有效地对企业中的问题流程进行改造,将BPR的各个阶段的工作有机地协调起来。 在BPR中可以用到的技术和方法有很多。下面介绍一些常用的手法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值