一、什么是性能

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. Android Google官方文档解析之——Application Fundamentals

    Android apps are written in the java programming language.The Android SDK tools compile your code-al ...

  2. layui表单提交与ajax访问webapi

    啊啊啊啊 这个东西实在很蛋疼啊 每次访问webapi就很老火 这里就一下  以后忘记的话就来查阅 不多说 直接开始 首先html页面 新建一个基于layui的form表单页面LayuiForm.csh ...

  3. http 请求体数据处理2--ngx

    HTTP 处理数据包, 有的业务不需要,此时只需要将数据包文读取后丢弃, 但是ngx 为什么还要提供一个丢弃接口呢???解决了什么问题?? ------对于HTTP模块而言,放弃接收包体就是简单地不处 ...

  4. shell编程之字符串操作

    shell中字符串操作主要有以下几种,其中:pattern ,old中可以使用通配符: ${#var} :返回字符串变量var的长度 ${var:m} :返回${var}中从第m+1个字符到最后的部分 ...

  5. 在一个递增数组的rotate变换中找target

    Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some pivot u ...

  6. Java字符类型(详解)

    [1]Java中使用单引号来表示字符常量,字符型在内存中占2个字节. char 类型用来表示在Unicode编码表中的字符.Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有655 ...

  7. 对图片进行Base64转码和解码

    Base64代码 base64.c #include <stdlib.h> #include <stdio.h> #include <string.h> #incl ...

  8. elementui checkbox复选框实现层级联动

    使用elementui 实现复选框的层级联动,可能我的表述不准确,先上一个效果图. 实际开发中可能遇到这样的场景,当选择高一层级的复选框时它包含的低级的复选框就不需要再勾选,需要默认选中并且禁止选用. ...

  9. spring boot配置MySQL8.0 Druid数据源

    创建spring boot项目,在pom中添加相应依赖 <!--web--> <dependency> <groupId>org.springframework.b ...

  10. 微信支付回调 敏感信息解密 v3 php

    今天博主用了一波微信的v3版本的支付,支付成功后发现回调跟v2的完全不一样,于是去看了了一波v3的文档,发现信息是经过加密的,需要解密才能获取的到 但是最悲催的是文档上没写怎么解密的,经过了一下午的百 ...