我最近在学习。
我有一个C代码名cal.c。现在,我应用两种不同的优化传递该代码,并生成两种不同的IR代码- cal1.ll和cal2.ll。
我如何比较他们之间的表现呢?
我试着比较了指令计数和指令成本,但它们都不是很好的特性。我认为指令计数与性能、指令成本和性能之间没有任何关系。
那么,如何比较两个IR的性能呢?
我不需要知道运行时间。我只想知道哪个更快。
发布于 2021-10-29 09:56:32
这是一个困难的问题,通常比在实际的硬件和度量上运行代码要困难得多,而实际的硬件和度量更快。它或多或少地归结为模拟硬件使用“笔和纸”。您将需要目标系统的详细模型,包括管道和缓存行为,然后使用该模型计算每个执行指令的成本。
发布于 2021-10-29 12:45:44
llvm mca试图通过重用LLVM编译器的CPU管道模型来静态地估计汇编代码的性能:
$ llvm-mca -mcpu=skylake foo.s
Iterations: 300
Instructions: 900
Total Cycles: 610
Total uOps: 900正如其他人所提到的,由于缺乏缓存和分支预测模型,CPU流水线模型不精确等原因,估计不精确(通常是非常不精确)。
https://stackoverflow.com/questions/69766552
复制相似问题