一、什么是性能

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

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

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

二、CPU时钟

如何统计程序运行时间?

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

  1. $ time seq 1000000 | wc -l
  2. 1000000

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

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

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

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

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

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

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

  1. 程序的 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. Jumpserver简介,部署使用

    Jumpserver简介 Jumpserver 是一款使用 Python, Django 开发的开源跳板机系统, 为亏联网企业提供了认证,授权,审计,自动化运维等功能,基于ssh协议来管理,客户端无需 ...

  2. Java入门(2)

    阅读书目:Java入门经典(第7版) 作者:罗格斯·卡登海德 一个简单的计算平方根的程序: 1 package com.java24hours; 2 3 public class Root { 4 p ...

  3. Python爬虫简单实现CSDN博客文章标题列表

    Python爬虫简单实现CSDN博客文章标题列表 操作步骤: 分析接口,怎么获取数据? 模拟接口,尝试提取数据 封装接口函数,实现函数调用. 1.分析接口 打开Chrome浏览器,开启开发者工具(F1 ...

  4. leetcode7:binary-tree-preorder-traversal

    题目描述 求给定的二叉树的前序遍历. 例如: 给定的二叉树为{1,#,2,3}, 1   \    2   / 3 返回:[1,2,3]. 备注:用递归来解这道题太没有新意了,可以给出迭代的解法么? ...

  5. 剑指29:最小的k个数

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. class Solution {public:    vector& ...

  6. C/C++中内存对齐问题的一些理解(转)

    内存对齐指令 一般来说,内存对齐过程对coding者来说是透明的,是由编译器控制完成的 如对内存对齐有明确要求,可用#pragma pack(n)指定,以n和结构体中最长数据成员长度中较小者为有效值 ...

  7. linux中几个文本文件查看命令

    Linux中,常用的文本文件查看命令介绍如下: 1. cat 用法: cat [options] filename options: -A: 显示全部. -E: 在每一行的后面加上"$&qu ...

  8. Linux上传递文件到另外一个Linux服务器

    现在的项目由于安全的需要,测试服务器被设置不能直接连接,想要连接的话,只能先登录一个服务器,然后以这个服务器为跳板,去登录另外一台真正的 服务器,即使是测试环境也只能这样操作.只能是相对来说安全一些. ...

  9. rbd的增量备份和恢复

    前言 快照的功能一般是基于时间点做一个标记,然后在某些需要的时候,将状态恢复到标记的那个点,这个有一个前提是底层的东西没用破坏,举个简单的例子,Vmware 里面对虚拟机做了一个快照,然后做了一些系统 ...

  10. hashlib模块(摘要算法)

    hashlib(1) # hashlib模块 # 现在写登录认证的时候,需要保存用户名和密码,用户名和密码是保存在文件中,并且都是明文,一旦丢了就完蛋了.所以 # 可以用hashlib将密码转换成密文 ...