计算机的性能公式

2023-11-07

  【cpu执行时间】简称CPU时间,表示执行某一任务在CPU上所花费的时间,不包括等待I/O或运行其他程序的时间。  

  程序的cpu执行时间 = cpu时钟周期数 × 时钟周期时间 = cpu时钟周期数 ÷ 主频

  要想缩短cpu执行时间,最简单的方法就是缩短cpu的时钟周期时间,也就是提升主频。

何为主频?

主频就是机器内部主时钟的频率,其常用单位为HZ,MHZ等。例如主频为8MHZ的机器,每秒有8M个时钟周期,cpu时钟周期是主频的倒数,则它的时钟周期数为1/(8x10^6)HZ=0.125μs

cpu周期又称机器周期,通常用从内存中读取一条指令字的最短时间来定义,一个指令周期由若干个cpu周期构成。

  换言之,就是换一块cpu。不过,这是软件工程师控制不了的事,所以我们自然想到乘式中另一个因子——cpu时钟周期数。如果能够减少程序所需要的cpu时钟周期数量,一样能够提高程序性能。

  对于cpu时钟周期数,我们可以再做一个分解,把它分成:

                         cpu时钟周期数=指令数×每条指令平均时钟周期数

  不同的指令需要的周期数是不同的,加法和乘法都对应着一条cpu指令,但是乘法需要的cpu时钟周期数就比加法要多,自然也就慢。在拆分了之后,我们的程序的cpu执行时间就可以变成这样三个部分的乘积:

                         程序的cpu执行时间=指令数×CPI×时钟周期时间=指令数×CPI/时钟频率

CPI:执行每条指令所需要的时钟周期数的平均值。

CPI = CPU时钟周期数 / 指令条数 = CPU时间 × 时钟频率 / 指令条数

  因此,如果我们想解决性能问题,其实就是要优化三点:

  1、时钟周期时间,就是计算机主频,这个取决于计算机硬件。

  2、每条指令的平均时钟周期数CPI,就是一条指令到底需要多少CPU cycle。现代的CPU通过流水线技术(pipeline)可以让一条指令需要的cpu cycle尽可能的少。

  3、指令数,代表我们的程序到底需要多少条指令,用哪些指令。这个很多时候就把挑战交给了编译器。同样的代码,编译成计算机指令的时候,就有不同的表达方式。

MIPS:每秒执行多少百万条指令

MIPS = 指令数 / (执行时间 × 10^6 ) = 主频 / CPI

【amdahl定律】

  改进后的执行时间=受改进影响的执行时间/改进量+不受影响的执行时间

amdahl定律阐述了“对于特定改进的性能提升可能由所使用的改进特征的数量所限制”的规则,他是“收益递减定律”的量化版本。改进后程序的总执行时间Tn = 改进前整个程序的执行时间 × (1 - 可改进比例Fe + (可改进比例Fe / 部件加速比Se))

改进后,整个系统的加速比为:Sn = T0 / T1 = 1 / (1 - Fe + (Fe / Se))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机的性能公式 的相关文章

  • 获取CPU或主板序列号?

    我正在尝试获取CPU serial or motherboard serial using C or Python出于许可目的 是否可以 我在用着Linux 在 Linux 下 您可以使用 lshw quiet xml 并解析其输出 您将在
  • R:如何检查可用的核心数/CPU 使用率

    R 是单线程的 使用 R 如何检查 Windows 和 Linux 中运行 R 的核心 线程数 或者正在运行多少卢比 使用R 如何检查Windows和Linux中运行R的每个核心的使用情况 或者每个 R 使用的 CPU 百分比 例如 如果我
  • 为什么负载不能绕过同一核心上的另一个线程从写入缓冲区写入的值?

    如果CPU核心使用写缓冲区 则负载可以从写缓冲区绕过最近的存储到引用的位置 而无需等到它出现在缓存中 但是 正如它所写的记忆一致性和连贯性入门 https lagunita stanford edu c4x Engineering CS31
  • Intel的Sandy Bridge CPU中TLB的大小是如何确定的?

    维基百科网页 https en wikipedia org wiki Sandy Bridge https en wikipedia org wiki Sandy Bridge 提到数据TLB对于4KB 2MB和1GB页面分别有64 32和
  • 获取CPU温度

    我想知道CPU的温度 以下是我使用 C 和 WMI 所做的工作 我正在读取 MSAcpi ThermalZoneTemperature 但它始终相同 而且根本不是 CPU 温度 有没有办法不用写驱动就能获取CPU的真实温度 或者有什么我可以
  • 基准测试 - 如何计算发送到 CPU 的指令数以查找消耗的 MIPS

    假设我有一个软件并想使用黑盒子 https en wikipedia org wiki Black box testing方法 我有一个 3 0GHz CPU 有 2 个插槽和 4 个核心 如您所知 为了找出每秒指令数 IPS 我们必须使用
  • 用于查找 UNIX 计算机上 CPU 信息的命令

    您知道是否有一个 UNIX 命令可以告诉我 Sun OS UNIX 机器的 CPU 配置是什么 我也在尝试确定内存配置 有没有 UNIX 命令可以告诉我这一点 AFAIK 没有标准的 Unix 命令 我没有使用过Sun OS 但是在Linu
  • GRUB 是否切换到保护模式?

    我想问一下 启动时将CPU切换到保护模式是GRUB还是Linux内核 我还想问 内核本身 vmlinuz 是 ELF 还是纯二进制格式 谢谢 GRUB does让你进入保护模式 GRUB多重引导规范 版本 0 6 96 第 3 2 节 ht
  • Android Studio 和 Ryzen CPU?

    我知道它可能会被标记为重复 但没有一个线程对我有帮助 所以我决定自己做一个 I m a Java后端开发人员我决定学习一些 Android 的东西 几年前我在 Android Studio 工作过i5 4570处理器 然后我放弃了 现在我发
  • 如何通过.NET Core查找物理CPU核心数(不是逻辑SMT超线程)?

    我想检测实际物理核心的数量 而不是逻辑核心的数量 因为当更多线程竞争私有每核心缓存时 工作负载会出现负扩展 和 或具有足够高的 IPC 每个核心运行多个逻辑线程不会吞吐量的增加超过线程开销的增加 特别是对于无法完美扩展到大量内核的问题 或者
  • 持续监控前 X 个进程的 CPU 使用率

    我希望能够每 5 秒将最高 CPU 消耗者输出到日志文件 这样我就可以在测试期间看到谁使用了最多的 cpu 我发现这个答案很常见 cpu Get Counter ComputerName localhost Process Processo
  • XNA 的 CPU 使用率高

    我今天刚刚注意到 当我编译并运行一款新的 XNA 4 0 游戏时 其中一个 CPU 线程以 100 的速度运行 并且帧速率下降到 54 FPS 奇怪的是 有时它可以在 60 FPS 下运行 但随后就会下降到 54 FPS 我以前没有注意到这
  • C linux相当于windows QueryPerformanceCounter

    Linux 中是否有等效的 C 函数用于读取 CPU 计数器及其频率 我正在寻找类似于 QueryPerformanceCounter 函数的东西 该函数读取现代 CPU 中的 64 位计数器 clock gettime 2 http li
  • GCC对读/写指令的重新排序

    Linux 的同步原语 自旋锁 互斥锁 RCU 使用内存屏障指令来强制内存访问指令重新排序 这种重新排序可以由 CPU 本身完成 也可以由编译器完成 有人可以展示一些 GCC 生成的代码示例 其中完成了此类重新排序吗 我主要对 x86 感兴
  • 当JVM执行Java应用程序时,操作系统的作用是什么?为什么我们需要操作系统?

    我在网上读过一些资料 有人说Java应用程序是由java虚拟机 JVM 执行的 执行 这个词让我有点困惑 据我所知 非Java应用程序 即 用C C 编写 可以由操作系统执行 在较低级别 这意味着操作系统将二进制程序加载到内存中 然后指示C
  • 查看x86架构中的cpu缓存内容

    如何查看或转储基于 x86 的架构的 cpu 缓存内容 每次进行缓存刷新时 我如何才能看到刷新了什么 在哪里 你不能 真的 CPU 缓存被设计为对于 CPU 上运行的代码是透明的 它具有加快代码执行速度的效果 但 CPU 管理有关缓存的所有
  • Linux:如何对系统内存施加负载?

    我正在开发一个小功能 它可以让我的用户了解 CPU 的占用情况 我在用着cat proc loadavg 它返回众所周知的 3 个数字 我的问题是 当我正在开发时 CPU 目前没有做任何事情 有没有一种好方法可以在CPU上产生一些负载 我在
  • 如何根据CPU能力实现渲染器

    我想知道在 JavaScript 中实现渲染器的最佳方法是什么 这里真正重要的并不是渲染的内容部分 我更想知道何时以及如何有效地运行渲染器代码 目前 我有window setInterval renderFunc 1000 20 每 50
  • CPU是如何做减法的?

    我有一些基本的疑问 但每次我坐下来尝试面试问题时 这些问题和我的疑问就会出现 假设 A 5 B 2 假设A和B都是4字节 那么CPU是怎么做的呢 A B添加 我知道 A 的符号位 MSB 为 0 表示正值 B 的符号位为 1 表示负整数 现
  • NodeJS CPU 一次飙升至 100%

    我有一个用 NodeJS 编写的 SOCKS5 代理服务器 我正在使用原生net and dgram打开 TCP 和 UDP 套接字的库 它可以正常工作大约 2 天 所有 CPU 的最大利用率约为 30 两天没有重新启动后 一个 CPU 峰

随机推荐

  • 05-----关于C++使用VS时出现 error C2248: “xxx“ 无法访问private成员(在“MySpdlog“类中声明)

    一 问题描述 项目中遇到一下问题 需要写个测试程序 但是在搭建的过程中 出现错误的 心想 代码一样的 怎么就报错了呢 于是开始查找问题 错误如下 因为我的测试程序文件不算多 就5个 代码也不多 于是我使用软件进行对比正确的代码和错误的代码
  • uniapp 之 微信小程序、支付宝小程序 对于自定义导航栏的不同

    目录 前言 微信小程序 代码 支付宝小程序 首页配置文件 二级菜单页面 配置 总结 不同 相同 前言 小程序都是 uni app 写的 不是原生 微信小程序 代码 pages json文件中配置 重点 navigationStyle cus
  • 电磁兼容测试分析软件软件,电磁兼容测试方案的主要应用

    汽车制造商必须保证汽车的无用杂散处于规定界限范围内 EMI 同时 要保证汽车能够抵抗来自外部和内部源的骚扰 EMS 例如电视发射机 移动基站或其他电子汽车组件 作为该领域的全球领导者 罗德与施瓦茨提供高效的测试解决方案 确保您的产品符合电磁
  • 恢复hosts文件

    因破解GoLand需要 得修改hosts文件 打开目录 C Windows System32 drivers etc 尼玛 hosts文件怎么没有了 什么局面 手动恢复hosts文件 窗口键 X 运行 cmd打开控制台 输入命令 for f
  • MySQL的bin目录去哪里了

    方法一 点开始 运行 输入 services msc 在打开的 服务管理器 中找到mysql并双击 会弹出来个属性框框 常规 选项卡里面有个 执行路径 从这个路径你就可以看到它的bin目录在哪 很多人没有找到框 再次更新一下 方法二 打开任
  • 小米造车150天:烈火烹油第一枪

    贾浩楠 发自 凹非寺量子位 报道 公众号 QbitAI 小米官宣造车 小米开启智能驾驶招聘 小米7737万美元收购深动科技 小米汽车正式完成工商注册 落户北京亦庄 入局5个月 这是小米造车的一系列进展 还没算上2万多简历 300人团队 大量
  • IOS上架流程详解,包含审核避坑指南!

    准备 开发者账号 完工的项目 上架步骤 一 创建App ID 二 创建证书请求文件 CSR文件 三 创建发布证书 CER 四 创建Provisioning Profiles配置文件 PP文件 五 在App Store创建应用 六 打包上架
  • ABP框架 - 介绍

    文档目录 本节内容 简介 一个快速示例 其它特性 启动模板 如何使用 简介 我们总是对不同的需求开发不同的应用 但至少在某些层面上 一次又一次地重复实现通用的和类似的功能 如 授权 验证 异常处理 日志 本地化 数据库连接管理 设置管理 审
  • C++ 实现Kafka TLS双向加密

    C 实现Kafka TLS双向加密 基本概念 非对称加密 CA TLS双向加密过程 TLS 双向认证流程 代码 基本概念 Kafka TLS双向加密包含的知识涉及到对称加密 非对称加密 Kafka CA 数字证书 本文采用C librdka
  • (python代码+讲解)重叠社区发现EAGLE层次算法的实现

    EAGLE是一种基于最大团聚类的层次聚类算法 用来揭示网络的层次化和层次化社区结构 该算法采用一种聚类框架 来处理最大派系 1 算法的实现 首先用Bron Kerbosch算法找到网络中的最大派系 要设置一个阈值k来丢弃所有小于K的最大派系
  • RS232中RTS和CTS的作用

    RS232中RTS和CTS的作用 转载 2011年12月26日 23 21 06 1149 0 0 RS232中RTS和CTS的作用 问 以前挺明白的 今天一下子觉得以前的理解都不对了 以下三种解释哪个对呢 解释一 RTS 终端我已经准备就
  • Spring Cloud(七):服务网关zuul过滤器

    上文介绍了Zuul的基本使用与路由功能 本文接着介绍Zuul的核心概念 Zuul过滤器 filter Zuul的功能基本通过Zuul过滤器来实现 类比于Struts的拦截器 只是Struts拦截器用到责任链模式 Zuul则是通过Filter
  • 云计算是被逼出来的

    author skate time 2010 05 26 云计算是被逼出来的 1 云计算是被逼出来的 云计算是被逼出来的 计算量越来越大 数据越来越多 越来越要动态 越来越要实时 越来越需要结构化 光有服务器 光有PC客户端已经不够了 所以
  • 集合泛型为对象,根据对象的某个属性进行排序

    根据集合里的深度 排序集合 Collections sort irFldsltpvMList new Comparator 为集合名 为实体类对象 Override public int compare IrFldsltpvM o1 IrF
  • java的两种比较器

    比较算法 日常生活中 如果想比较两个数的大小 可采用做差的方式 做差结果的正负可用来判断两个数的大小 假设A B C 若整数C gt 0 说明 A gt B 若整数C 0 说明 A B 若整数C lt 0 说明 A lt B java的两种
  • 求子数组问题

    子数组问题分为三类 1 连续子数组 2 非连续子数组 3 可连续也可以不连续 这三类问题的解决办法一般都是循环或者动态规划 尝试了dfs算法 结果把自己给绕进去了 一 最大升序问题 属于第三类 参考 https www cnblogs co
  • Controlling Font Size With Javascript 兼容主流浏览器

  • 简单的递归组件示例-vue3

    1 呈现效果 2 代码实现 2 1 src App vue 代码
  • 送呆萌的她一个皮卡丘(Python实现)

    目录 1 呆萌的她 2 思维需要革新 3 送她的一个漂亮皮卡丘 4 Python完整代码奉上 1 呆萌的她 又是一季春风暖阳下 你是一湾一湾羞涩的春波 静静感受着 你垂下的枝膊 在我的脸上轻轻抚摸 一对春燕 低低掠过 涟漪乍起 是你浅浅的笑
  • 计算机的性能公式

    cpu执行时间 简称CPU时间 表示执行某一任务在CPU上所花费的时间 不包括等待I O或运行其他程序的时间 程序的cpu执行时间 cpu时钟周期数 时钟周期时间 cpu时钟周期数 主频 要想缩短cpu执行时间 最简单的方法就是缩短cpu的