给定一个合理规模的C程序(数千行代码),平均来说,将生成多少ASM指令.换句话说,什么是现实的C-to-ASM指令比率?随意做出假设,例如“使用当前x86架构”.
我尝试过Google,但我找不到任何东西.
附录:注意到这个问题带来了多少混乱,我觉得需要一个解释:我想知道的这个答案是实际上知道“3GHz”是什么意思.我完全知道,Herz的吞吐量根据架构,硬件,高速缓存,总线速度和月球位置而有很大的不同.
我不是在一个精确和科学的答案之后,而是一个经验答案,可以被置于可比较的范围.
这不是一个微不足道的答案(当我注意到),这是我最大的努力.我知道每行C的ASM结果行数量取决于你在做什么.我不在sqrt(23.1)的同一个社区 – 我知道这一点.另外,无论我从C中得到什么ASM,ASM被解释成处理器内的各种微码集,这又取决于你是运行AMD,Intel还是其他的,以及它们各自的代码.我也知道这一点.
球场答案我已经到目前为止我已经做了以下工作:一个足够大的项目,平均每一行ANSI-C大约2行x86 ASM.今天的处理器可能会在每个时钟周期平均约一个ASM命令,一旦管道被填满,并给出一个足够大的样本.
解决方法
您可以通过要求编译器仅生成程序集(例如gcc -S)或通过在已编译的可执行文件上使用反汇编器(但需要源代码进行比较才可以)了解出任何特定的程序和实现组合无论如何).
编辑
根据您对您要完成的内容的澄清(了解现代处理器可以在一秒钟内执行多少行代码)进行扩展:
而现代处理器可能以每秒30亿个周期的速度运行,并不意味着它可以每秒执行30亿条指令.这里有一些需要考虑的事情:
>许多指令执行多个周期(分割或浮点运算可能需要数十个周期才能执行).
大多数程序花费绝大多数时间等待内存访问,磁盘访问等等.
>包括操作系统开销(调度,系统调用等)在内的许多其他因素也是限制因素.
但总的来说,处理器速度非常快,可以在短时间内完成惊人的事情.
原文地址:https://www.jb51.cc/c/113543.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。