Performance 从程序集源代码中计算时钟周期?

Performance 从程序集源代码中计算时钟周期?,performance,analysis,Performance,Analysis,我已经编写了源代码,我想通过完成特定任务所需的时钟周期来衡量效率。在哪里可以了解不同命令的时钟周期?8086上的每个命令占用的时间是否相同?是高分辨率时钟提取指令 请记住,缓存未命中、上下文切换、指令重新排序和流水线以及多核争用都会影响结果。时钟周期和效率不是一回事 对于代码的效率,你需要特别考虑内存是如何被调用的,特别是缓存的不同级别。同样重要的是代码的分支预测等。你需要一个能告诉你这些事情的探查器,理想的情况是一个能提供特定于概要文件信息的探查器:例如AMD芯片的CodeAnalyst 为了

我已经编写了源代码,我想通过完成特定任务所需的时钟周期来衡量效率。在哪里可以了解不同命令的时钟周期?8086上的每个命令占用的时间是否相同?

是高分辨率时钟提取指令


请记住,缓存未命中、上下文切换、指令重新排序和流水线以及多核争用都会影响结果。

时钟周期和效率不是一回事

对于代码的效率,你需要特别考虑内存是如何被调用的,特别是缓存的不同级别。同样重要的是代码的分支预测等。你需要一个能告诉你这些事情的探查器,理想的情况是一个能提供特定于概要文件信息的探查器:例如AMD芯片的CodeAnalyst


为了回答您的问题,特定的基本指令确实具有给定的(平均)周期数(AMD在其数学库中发布了基本数学函数的近似数)。但是,这些数字不是优化代码的好地方。

我用它来衡量速度。当不在专用系统上时,任何纯软件任务都不应仅按秒或分钟计时。我正在写一个加密,我想知道加密每个字节需要多少时钟周期。我无法用MB/s来衡量,因为不同级别的计算机返回的速度介于50 MB/s和350 MB/s之间。许多加密算法的“速度”都是这样衡量的。@Corey啊,我明白了,AMD库中的特定函数都记录了时钟周期,如果这有帮助的话(第7章):developer.AMD.com/assets/acml_userguide.pdf