【问题标题】:Where are hotspots in GCC/CLANG?GCC/CLANG 的热点在哪里?
【发布时间】:2015-04-15 18:06:38
【问题描述】:

我想测试 GCC/clang,并且我想专注于大多数计算/优化都发生在那里的部分。这些文件是什么?

【问题讨论】:

  • 我认为您需要在这里扩展热点的含义。您是在谈论编译器代码本身或编译器正在编译的代码中的“热点”吗?你想知道这个的目的是什么?
  • GCCClang/LLVM 是两个不同的编译器,只有很少(可能几乎没有)通用代码。
  • @RossRidge 我的意思是编译器本身。
  • @BasileStarynkevitch,没错。如果您对其中任何一个有建议,我将不胜感激。
  • 我认为用这么少的信息最好的答案是“所有文件”......找到一个gcc-<some-version>.tar.gz,打开它,然后开始挖掘。编译过程的各个部分,从输入解析、句法分析、语义分析、优化、重组、重组、代码生成等,将分散在源代码中的各个地方——没有一个文件可以包含“大多数计算/优化”,甚至是一小部分文件。具有成熟优化框架的编译器往往是非常复杂的生物。

标签: gcc compiler-construction clang compiler-optimization


【解决方案1】:

您可能不会在GCC 编译器中找到任何明显的热点(几年前围绕这个想法有一些 GSOC 项目),至少当您要求它进行优化时。

您可以使用-ftime-report & -fmem-report 选项到gcc(除了像-O2 这样的优化选项)来找出更多(编译器优化)通过的时间。对于大多数工作负载,您不会发现任何明显的通行证比其他通行证占用更多的资源。

我猜在 Clang 中也是如此。编译器是非常复杂的软件,内部没有容易优化的热点(否则编译器社区的人会发现它们)。

顺便说一句,最近的 GCC 有插件挂钩,可让您编写 GCC 插件(在 C++ 中)或 GCC 扩展(在 MELT 中)以查找更多信息。

【讨论】:

    猜你喜欢
    • 2020-02-26
    • 2016-08-06
    • 1970-01-01
    • 2014-04-26
    • 2020-07-11
    • 1970-01-01
    • 2010-12-16
    • 2023-02-14
    • 1970-01-01
    相关资源
    最近更新 更多