一、什么是性能

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指令是编译器做的事

(四)CPU主频与”性能“的更多相关文章

  1. intel Xeon(R) CPU E5-2650 v2 性能测试报告

                                          intel  Xeon(R) CPU E5-2650 v2                                 ...

  2. 原来 CPU 为程序性能优化做了这么多

    本文主要来学习内存屏障和 CPU 缓存知识,以便于我们去了解 CPU 对程序性能优化做了哪些努力. 首先来看下 CPU 缓存: CPU 缓存 CPU 缓存是为了提高程序运行的性能,CPU 在很多处理上 ...

  3. 基础 - 获得CPU主频

    // 获得cpu主频.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <windows.h> #include ...

  4. PostgreSQL CPU满(100%)性能分析及优化(转)

    PostgreSQL CPU满(100%)性能分析及优化 转自:https://help.aliyun.com/knowledge_detail/43562.html    在数据库运维当中,一个DB ...

  5. Windows系统CPU内存网络性能统计第一篇 内存

    最近翻出以前做过的Windows系统性能统计程序,这个程序可以统计系统中的CPU使用情况,内存使用情况以及网络流量.现在将其整理一下(共有三篇),希望对大家有所帮助. 目录如下: 1.<Wind ...

  6. 【UEFI】---关于BIOS,EIST和PState&CState和CPU主频变化得关系

    Intel处理器都支持Turbo和EIST,且一般情况下,各家厂商在BIOS中都会设置EIST和PState的开关,那么这些开关与CPU的频率的关系是什么呢?今天对此做个总结: 按照国际惯例,本次梳理 ...

  7. 03、CPU主频,和性能

    性能?时间的倒数 有两个指标:一个是响应时间或者叫执行时间:一个是吞吐率或者带宽,这两个就可以理解为办事的时间和办事的多少. 而 性能= 1/响应时间 CPU时钟:计算机的计时单位 程序的CPU执行时 ...

  8. CPU VS GPU(性能调优 12.1)

    CPU VS GPU 关于绘图和动画有两种处理的方式:CPU(中央处理器)和GPU(图形处理器).在现代iOS设备中,都有可以运行不同软件的可编程芯片,但是由于历史原因,我们可以说CPU所做的工作都在 ...

  9. cpu和memory性能监控

    cpu性能监控 #!/bin/bash column_count= i= m= is_want= str_msg=""; file_name=./test/`date +%Y-%m ...

随机推荐

  1. How to resolve DynamicHeight problem in Morphx report[X++]

    For set dynamic height for controls in report on executeSection method: method 01 real maxHeight; st ...

  2. 微信小程序获取二维码API

    <%@ WebHandler Language="C#" Class="ce" %> using System; using System.Web; ...

  3. [C#.NET 拾遗补漏]12:死锁和活锁的发生及避免

    多线程编程时,如果涉及同时读写共享数据,就要格外小心.如果共享数据是独占资源,则要对共享数据的读写进行排它访问,最简单的方式就是加锁.锁也不能随便用,否则可能会造成死锁和活锁.本文将通过示例详细讲解死 ...

  4. 压缩法备份Linux系统文件

    在使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工 具(通常都是私有软件),然后重启电脑进入备份工具提供的 ...

  5. 设计师建筑师太难了,既要学BIM、无人机,还要学GIS!

    我,一个平平无奇的城市规划专业(建筑专业.路桥专业)大学生,还有一年要毕业,很担心工作以后受到社会的毒打,遂问导师和学长,我要自学点什么技能和软件? 学长A:CAD,SketchUp,PS我都很熟练了 ...

  6. http代理阅读3 发送mem处理

    每次客户端有可读数据触发时,优先检测是否还有数据没有发送,如果有则发送数据,然后在读取client数据 //向后端发送请求的调用过程 //ngx_http_upstream_send_request_ ...

  7. select限制之文件描述符限制

    1.一个进能够打开的最大文件描述符限制.可以通过两种方式修改ulimit -n :获取最大文件描述符个数ulimit -n 2048:修改为2048个 该限制的测试代码: 客户端程序: /* 1.se ...

  8. TextView之富文本

    项目中使用富文本比较常见了,一行显示多种样式颜色的文本,使用 ClickableSpan 富文本实现在同一个 TextView 中的文本的颜色.大小.背景色等属性的多样化和个性化. 我们也可以使用Ht ...

  9. 基于Opencv识别,矫正二维码(C++)

    参考链接 [ 基于opencv 识别.定位二维码 (c++版) ](https://www.cnblogs.com/yuanchenhui/p/opencv_qr.html) OpenCV4.0.0二 ...

  10. kali 安装redis

    wget http://download.redis.io/releases/redis-2.8.3.tar.gz    下载 tar xzf redis-2.8.3.tar.gz          ...