背景

1、做性能优化时,其实也是存在二八定律的,基本上80% 的性能损耗是由20%的代码引起的,而且这20%的代码被基本上被调用的频率非常高。因此一些比较简单的优化就能显著提高性能;

2、在写好代码之后再考虑性能优化的事,否则会出现代码难以读懂,抽象依赖细节等各种问题。另外过早的优化可能没有想象的那么有用,原因参考第一条;

3、在资源不是很紧张的情况下,程序员的生产力的提高比性能的优化更重要。

4、很多优化都是在做时间和空间的权衡,考虑哪个更重要,然后决定优化思路;

5、良好的代码风格,代码结构能有效提高代码的性能;

6、优化是有限度的,代码的可读性与可维护性非常重要。

工具

liunx下一般使用gprof,windows下一般使用vs自带的vsperfmon.exe。

优化方法

1、在空间允许的前提下,将经常访问的资源,缓存在内存中;

2、优化判断条件,减少循环次数;

3、优化锁的使用,能用原子操作的就不用锁。能用应用层同步手段的,就不要使用内核对象同步;

4、优化内存使用,内存块频繁的申请与释放耗时比较大,必要情况下可以自己实现内存管理;

5、减少非必要的线程创建,节省系统资源与切换造成的性能损耗,考虑线程池;

c++性能优化(cpu篇)相关推荐

  1. linux性能优化--cpu篇

    linux性能优化--cpu篇 前言 负载 CPU使用率 proc perf 一些链接 `perf list` 比较有用的event `perf stat` `perf record` Profili ...

  2. Unity3D性能优化——工具篇

    Quote from:https://zhuanlan.zhihu.com/p/39529241 性能优化是游戏项目开发中一个重要且必须的元素.用户和项目的需求在并且会持续增长.而即便在硬件设备高速发 ...

  3. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(三) Linux 软中断

    [Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(三) Linux 软中断 [1]相关概念 [1.1]中断 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力:为了减少 ...

  4. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(一) 平均负载、上下文切换、CPU 使用率

    [Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(一) 平均负载.上下文切换.CPU 使用率 [1]相关概念 [1.1]平均负载 平均负载是指单位时间内,系统处于可运行状态和不可 ...

  5. 由美团技术文章整理---spark性能优化基础篇--开发调优与资源参数调优

    文章地址1:Spark性能优化指南--基础篇 - 美团技术团队 文章地址2:Spark性能优化指南--高级篇 - 美团技术团队 目录 一.关于性能优化基础篇--开发调优 1.避免创建重复RDD (1) ...

  6. iOS性能优化系列篇之“列表流畅度优化”工具篇

    这一篇文章是iOS性能优化系列文章的的第二篇,主要内容是关于列表流畅度的优化.在具体内容的阐述过程中会结合性能优化的总体原则进行分析,所以建议大家在阅读这篇文章前先阅读一下上一篇文章:iOS性能优化系 ...

  7. vuejs项目性能优化 - 总结篇

    首页等页面加载慢?打包编译后css/js文件过大?试试压缩.路由懒加载等技术 打包编译后,过大的文件如:app.css.app.js.vendor.js 本着 "开发环境".&qu ...

  8. 关于nginx性能优化CPU参数worker_cpu_affinity使用说明

    Nginx性能优化CPU参数worker_cpu_affinity使用说明 官方说明:http://wiki.nginx.org/NginxHttpMainModule#worker_cpu_affi ...

  9. linux nginx cpu 高,Linux 系统 Nginx性能优化CPU参数

    Nginx性能优化CPU参数worker_cpu_affinity使用说明 官方说明: worker_cpu_affinity Syntax:worker_cpu_affinity cpumask [ ...

  10. Unity性能优化 – 脚本篇

    最近开始进行Unity性能优化的工作,主要分为三类:CPU.GPU和内存.由于我们游戏的核心战斗是计算密集型,所以主要是受限于CPU.CPU的优化又分为渲染和脚本,本文将着重于脚本优化. 一般来说,优 ...

最新文章

  1. 删除字符串最后一个字符的几种方法
  2. OpenCV异常问题(一)
  3. Linux系统解决网络问题的笔记
  4. 这是一次 docker 入门实践
  5. Java Date toString()方法与示例
  6. 远程连接SQL Server数据库
  7. css多行文本溢出显示省略号(兼容ie)
  8. java systemoutprint_java – 为什么System.out.print()不起作用?
  9. GitLab CI简单示例
  10. shell-一些有趣的使用
  11. com.jogamp.opengl.GLException: J3D-Renderer-1: createImpl ARB n/a but required, profile > GL2 reques
  12. 10.2.0.4 ON AIX 修改字段属性报错ORA-00600 [kdsgrp1]
  13. HttpClient4
  14. python爬取阳光问政
  15. FaceBook和Google广告API接口文档
  16. 【渝粤题库】陕西师范大学200521 普通语言学
  17. 如何快速更改电脑ip地址【图文教程】?
  18. 计算机应用基础提问话题,10个开启新话题的过渡方法.docx-汇文网
  19. java8 集合的交集、并集、差集
  20. 关于新冠肺炎(COVID-19)论文解读集合

热门文章

  1. 输入梯形的上底,下底和高,求梯形的面积
  2. Centos7配置TiDB集群
  3. 微信小程序:腾讯AI语音合成实践
  4. 跨域问题及解决方式(CORS)
  5. 工资就像大姨妈,一个月一次,一周左右就没了
  6. html audio语音播放器,HTML5-定制音频播放器-audio
  7. vue3实现语音播放功能
  8. PsbA丨D1 protein of PSII性能参数解决方案
  9. cadence SPB17.4 - orcad Illegal character(s) present in the name or value
  10. 从Trade.dll到Tradex.dll,程序化交易接口的前世今生