一、什么是性能

CPU的性能就是就是时间的倒数,简单来说:耗时越少,性能越好,主要包含下面两个指标:

  • 响应时间:程序执行耗时
  • 吞吐率:单位时间处理数据或执行程序的量

缩短响应时间,一定时间内可以执行更多的任务,也就提高了吞吐率;除此之外现代CPU一般都是多核,多个核心同时工作就是通过“并行”来提高吞吐率,由于提示单机性能越来越困难也就是说要缩短响应时间很困难,因此大部分时候我们通过“堆机器”来提升吞吐率。

二、CPU时钟

如何统计程序运行时间?

由于计算机运行过程中会不断在,CPU会不断在多个程序间切换,因此通过代码中打印起止时间的方式并不能准确统计出程序运行时间;但是在Linux下我们可以使用time命令来较为准确的统计程序运行时间:real表示程序运行时结果的自然时间

$ time seq 1000000 | wc -l
1000000

# 程序运行实际花费的时间=用户态时间+内核态时间

real 0m0.101s    # 程序运行时自然流过的时间
user 0m0.031s    # 程序运行中花在用户态的时间

sys 0m0.016s    # 程序运行中花在内核态的时间

程序的运行时间受很多因素影响,这包括CPU执行指令、IO操作耗时、数据在主板上传输的时间等等,因此我们需要对于具体指标加以分析,比如CPU时间组成如下:

程序的 CPU 执行时间 =CPU 时钟周期数(CPU Cycles)× 时钟周期时间(Clock Cycle)

CPU内部使用“晶体振荡器”来控制CPU时钟(石英表好像也是利用晶体振荡频率),例如Intel Core-i7-7700HQ 2.8GHz这款CPU的时钟周期时间就是1/2.8G;看起来,我们可以通过提升CPU主频就可以降低程序运行时间。

然而:由于每条指令执行需要的CPU时钟周期数不同,因此我们引入指令平均耗时CPI这个参数,程序运行时间的表达也就变成这样:

程序的 CPU 执行时间 = 指令数×CPI×Clock Cycle Time

由此可知,优化程序的CPU运行效率就是优化以上三个参数:

  1. CPU时钟周期,3.8GHz的就要比2.8GHz的强很多
  2. 每条指令的平均时钟周期数CPI
  3. 指令数,将程序语言转换成CPU指令是编译器做的事

最新文章

  1. Java类加载基本过程
  2. Wordpress基础:安装主题和插件
  3. 刚看到的感觉会用的到 收藏一下 常用的iOS第三方资源 (转)
  4. HDU 4941 Magical Forest 【离散化】【map】
  5. 第二篇、微信程序尺寸rpx
  6. iOS中的深复制与浅复制
  7. [转] 网络流算法--Ford-Fulkerson方法及其多种实现
  8. POJ 动态规划题目列表
  9. ExtJs006类别名、备用名
  10. 删掉SafeDrv病毒(这个病毒有点意思)
  11. eeclipse使用快捷键
  12. php5.6在yum下安装redis
  13. python 爬虫入门----案例爬取上海租房图片
  14. SublimeText3解决中文乱码
  15. 【转】 glibc detected *** corrupted double-linked list:错误的原因有如下三种可能
  16. cut字符串截取
  17. python爬虫之短信报警
  18. sharepoint webapp 部署注意点
  19. Github SSH key 的配置
  20. [转]关于重定向RedirectAttributes的用法

热门文章

  1. TCP性能分析与调优策略
  2. ansible快速部署cassandra3集群
  3. npm的命令参数 --save-dev和 --save两者有什么区别?
  4. 第一次本地代码提交到github
  5. Moment.js的常见用法
  6. 睿象云:为什么 Zabbix 告警如此火热?
  7. 手把手教你使用Vuex(二)
  8. Java中常量池详解
  9. Spring @Autowired 注解自动注入流程是怎么样?
  10. webbug3.0菜鸟笔记1