C++效率

八二法则

八二法则是说软件的整体性能几乎总是由代码的一小部分决定。80%的资源用在20%代码上、80%的内存被20%的代码使用、80%的磁盘访问被20%的代码使用等。
找出影响效率的那20%的代码的错误方式就是靠直觉来猜测,而程序的性能特质倾向于高度的非直觉性,最有效的办法还是根据观察或者实验结果来分析识别出造成效率低下的那20%的部分。

采用缓式计算

原则:在你真正需要之前,不必着急为某物做一个副本,而是用拖延战术,只要可以,就使用其他的副本。


区分读写
在linux中创建进程采用fork,其中有个叫copy on write的技术,也就是fork之后不会马上复制父进程的所有资源,而是子进程共享父进程的资源,直到写那一刻才拥有自己的副本。这样就加快了子进程创建速度,因为大部分情况创建进程可能会调用exec来调用新的程序来执行。所以有时候复制是徒劳的。


缓式取出
对于大的对象而言,产生该对象时只是产生一个壳子,其中的成员变量(可能从磁盘读取,可能从网络读取,可能从数据库读取)的初始化只有用到该变量时才进行初始化。如果万一用不到某个变量,我们也就节省了一部分初始化的时间。


缓式计算
对于一些大型的运算(如大的矩阵运算),可以先记录数值,等到被使用时才进行计算。


小节
对于一定要进行的计算,缓式计算并不获得太多的好处,终究需要计算,反而因此浪费更多的空间和时间。但是如果有些计算是不必要的,可以省略的,则缓式计算可以提高效率。

采用超急评估

该策略与缓式评估相反,其背后的观念是:如果预期程序会常常用到某个运算,则设法降低每次计算的平均成本,办法就是设计一个数据结构以便能够有效的处理需求。


使用Caching
使用Cache的简单做法就是将“已经计算好而有可能再次被需要”的数据保存下来。
比如程序对数据库中的某个字段需要频繁查询,最好的办法就是,首次查询到某个字段就存储在内存的一个数据结构中,后边的查询如果发现已经在内存中就不要再去读取数据库。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值