LLVM传递,用于测量某些函数调用所花费的时间

时间:2017-01-13 18:16:22

标签: llvm

我的想法是在这些调用之前和之后插入一个函数,该函数测量所花费的时间并收集数据。我在此示例https://github.com/sampsyo/llvm-pass-skeleton/tree/rtlib之后在单独的C文件中编写该函数。以下是我的问题:

1-外部功能必须在C中吗? 2-是否存在执行相同/类似工作的现有项目? 3-内置或不存在LLVM会产生影响吗?

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

(这是基于我开发仪器工具的经验,Contech)。

  1. 外部功能只需要能够链接到项目中。我发现在C中编写检测函数最简单,但您可能更喜欢其他语言。请注意,其他语言可能遵循不同的命名/调用约定。
  2. Contech和Harmony都有一些功能可以做到这一点。特别考虑并记录同步功能的成本。
  3. 我已经使用预先安装的LLVM二进制文件成功运行Contech以及从源代码构建它。
  4. 仪器的基本思想是在进行函数调用之前收集一个开始时间。返回后,您可以将此开始时间传递给后续检测例程。根据这些事件的频率,可能会建议仪器将记录存储在缓冲区中,或者甚至将处理传递给单独的线程。