我知道这个问题不可能绝对回答,但我只是想要一个大致的数字:
假设有一个相当大的C程序(成千上万行代码),平均会生成多少条汇编指令。换句话说,C到汇编指令的比率是多少?可以做出一些假设,比如“在目前的x86架构下”。
我尝试通过谷歌搜索得到这方面的信息,但没有找到任何有用的结果。
补充说明:注意到这个问题带来了多少混乱,我感觉需要解释一下:通过这个问题,我想知道实际意义上“3GHz”是什么意思。我完全意识到每赫兹吞吐量因架构、硬件、缓存、总线速度和月亮的位置而大相径庭。
我不需要一个精确和科学的答案,而是一个经验性的答案,可以放入可理解的范围内。
这不是一个简单的答案(正如我开始注意到的那样),这是我最好的努力。我知道C程序中生成的汇编代码行数取决于你正在做什么。 i ++
与 sqrt(23.1)
不在同一个邻域,我知道这一点。此外,无论我从C中得到什么汇编代码,该汇编代码都会在处理器内转换为各种微码集,这又取决于您正在运行的是AMD、英特尔还是其他东西,以及它们各自的代数。我也意识到了这一点。
到目前为止,我得到的大致答案就是我想要的:足够大的项目平均每1行ANSI-C代码对应2行x86 ASM代码。今天的处理器可能平均每个时钟周期生成一条ASM指令,一旦流水线被填充,并且给出足够的样本。