首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过静态分析比较两种码的性能?

如何通过静态分析比较两种码的性能?
EN

Stack Overflow用户
提问于 2021-10-29 09:28:25
回答 2查看 102关注 0票数 0

我最近在学习。

我有一个C代码名cal.c。现在,我应用两种不同的优化传递该代码,并生成两种不同的IR代码- cal1.llcal2.ll

我如何比较他们之间的表现呢?

我试着比较了指令计数和指令成本,但它们都不是很好的特性。我认为指令计数与性能、指令成本和性能之间没有任何关系。

那么,如何比较两个IR的性能呢?

我不需要知道运行时间。我只想知道哪个更快。

EN

回答 2

Stack Overflow用户

发布于 2021-10-29 09:56:32

这是一个困难的问题,通常比在实际的硬件和度量上运行代码要困难得多,而实际的硬件和度量更快。它或多或少地归结为模拟硬件使用“笔和纸”。您将需要目标系统的详细模型,包括管道和缓存行为,然后使用该模型计算每个执行指令的成本。

票数 0
EN

Stack Overflow用户

发布于 2021-10-29 12:45:44

llvm mca试图通过重用LLVM编译器的CPU管道模型来静态地估计汇编代码的性能:

代码语言:javascript
复制
$ llvm-mca -mcpu=skylake foo.s
Iterations:        300
Instructions:      900
Total Cycles:      610
Total uOps:        900

正如其他人所提到的,由于缺乏缓存和分支预测模型,CPU流水线模型不精确等原因,估计不精确(通常是非常不精确)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69766552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档