性能比较 - gcc 和 llvm-gcc

2024-01-17

我在 Spec cpu2006 基准测试中将 gcc 和 llvm-gcc 与 hmmer 和 mcf 上的 -O3 选项进行了比较。令人惊讶的是,我发现 gcc 在这两种情况下都击败了 llvm-gcc。是因为-O3有不同的含义吗?我应该如何建立实验以获得公平的比较?

顺便说一句,我通过仅更改 makefile 中的 cc 进行了实验。

谢谢, 博


您似乎对 gcc 在基准测试中击败 llvm 感到惊讶。Phoronix在这个领域举办了一系列有趣的基准测试。例如,看一下:

  • .

(很多可爱的颜色。)

据,直到...为止我应该如何建立实验以获得公平的比较?继续,想必您应该比较最快的运行时间、最快的编译时间、最低的内存占用、每瓦最多的操作以及 CPU 数量的可扩展性(您付钱并选择),以获得每个编译器的最快配置与最快配置其他人的。

首先,您至少需要确定每个程序的可变性 - 对于平台上单个程序的每次运行,变量的可重复性如何。 (是的,可信的基准测试需要您的彻底。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

性能比较 - gcc 和 llvm-gcc 的相关文章

  • 带有 LLVM 的 C ABI

    我有一个用 LLVM 编写的编译器 我希望提高 ABI 合规性 例如 我发现很难在 Windows x86 或 Linux 上实际找到 C ABI 的规范文档 我发现的那些用 RAX EAX 等术语解释它 而不是我可以使用的 IR 术语 到
  • 如何设置 VS Code 项目以构建 LLVM

    我想使用 VS Code 来构建和调试 LLVM 源代码 有没有一个好的文档解释如何在 VS Code 中为 LLVM 设置项目 提前致谢 我发现以下博客很有用 https developers redhat com blog 2021 0
  • LLVM 中编译单元的正确抽象是什么?

    在 LLVM 中我们有LLVMContext 这是存储单位 我们有llvm Module 这是构建新符号 函数和类型 的地方 我的问题是 用于编译单元的正确 llvm 抽象是什么 是个Module 或者这实际上意味着更大的范围 即 共享库目
  • VS 2012 上的 LLVM 3.4 链接器错误

    我已经使用 Cmake 从源代码构建了 LLVM 3 4 我参考了使用 Microsoft Visual Studio 进行安装的 LLVM 系统入门文档 我现在想在我自己的项目中使用 LLVM 我已经使用以下命令在 VS 2012 中添加
  • 从 ExecutionEngine 调用 C/C++ 函数

    我正在学习 llvm 想要对我的想法进行概念验证 基本上 我想分割我的编译器和运行时 编译器将给出一个 bc 运行时将通过 ParseBitcodeFile 加载它并使用 ExecutionEngine 来运行它 这部分正在发挥作用 现在
  • C/C++软件可以编译成字节码以便以后执行吗? (架构独立的 UNIX 软件。)

    我想将现有软件编译成演示文稿 以便以后可以在不同的体系结构 和操作系统 上运行 为此 我需要一个可以在另一个架构 操作系统上轻松运行 模拟的 字节 代码 LLVM http llvm org 红外 一些 RISC 汇编 一些随机的想法 编译
  • Linux 中的 -emit-llvm

    我是 LLVM 的新手 尝试在 Linux 上生成人类可读的 ll 文件 我安装了 llvm gcc 但据我所知它只能生成汇编代码 S 选项 有什么办法可以得到类似于 llvm 在线生成的东西compiler http llvm org d
  • 使用 readability-identifier-naming 时,clang-tidy 将名称空间视为全局变量

    我正在使用 clang tidy 来检查源代码 在文件中 clang tidy我定义 Checks readability identifier naming CheckOptions key readability identifier
  • MacOS 上使用 clang-15 时 FindTerminfo 中的 CMake 错误

    我在我的项目中使用 llvm 并使用 cmake 找到它find package LLVM REQUIRED CONFIG 配置失败并显示消息 cmake CMake Error at Applications CMake app Cont
  • 在 CMake 中设置 Clang 库的路径

    我从 git 构建 llvm 并希望在项目中使用这些库 尤其是 libclang makefiles 是通过 CMake 生成的 对于 LLVM 部分 我找到了设置LLVM DIR重新路由 llvm 库的路径 但对于 Clang 我找不到这
  • 如何在 LLVM 中将 genericValue 转换为 Value?

    我从事口译工作 我在内存中有一个变量的地址 我设法从它中获取实际值 并使用 LoadValueFromMemory 函数将其放入 genericValue 中 现在我需要创建一个 StoreInst 并希望将获得的值放入 Value 对象中
  • 针对 Windows Phone ARM 目标的 Clang 交叉编译

    我想使用 Clang 为 Windows Phone ARM 目标编译一个用 C 编写的程序 有人有这方面的经验吗 什么是更好的方法 1 使用 Clang for Windows 和 MinGW 在运行 Windows 8 的主机上构建 C
  • 使用 llvm-prof 收集 LLVM 边缘分析

    我正在使用这些命令来编译下面的代码以收集 trunk llvm 中的边缘 块分析 clang emit llvm c sort c o sort bc opt insert edge profiling sort bc o sort pro
  • 对于使用块的 clang 程序,您需要链接哪些库

    我发现 如下 在编译使用块的代码时需要使用 fblocks 我需要链接哪个库才能让链接器解析 NSConcreteStackBlock 在 Ubuntu 9 10 AMD64 上 chris chris desktop clang ctes
  • 使用 LLVM 将 x86 代码重新编译为更快的 x86

    是否可以输入 x86 32 位代码来运行 LLVM 编译器 有一个巨大的算法 我没有源代码 我想让它在相同的硬件上运行得更快 我可以通过优化将其从 x86 转换回 x86 吗 这段代码运行时间很长 所以我想对其进行静态重新编译 另外 我可以
  • LLVM 6.0.0 的构建大小很大 (42G)

    I built llvm 6 0 0从源头开始 一切正常 我只是想知道它的尺寸怎么这么大 42G 我可以轻松删除一些目标文件或其他文件以使构建目录更小吗 du hs GIT llvm 6 0 0 build 42G home oren GI
  • 如何嵌入LLVM?

    LLVM 核心项目包括 编译器 将源代码转换为 LLVM IR VM 执行编译后的IR代码 如何将 VM 嵌入到 C 应用程序中 LLVM 实际上是一个可以链接到的库的集合 因此嵌入起来非常容易 更多时候 LLVM 会获取您生成的 IR 并
  • 未优化的 clang++ 代码在简单的 main() 中生成不需要的“movl $0, -4(%rbp)”

    我创建了一个最小的 C 程序 int main return 1234 并使用 clang 5 0 禁用优化 默认 O0 得到的汇编代码是 https gcc godbolt org z OYLghAFBqd5QCxAYwPYBMCmBRd
  • 使用 LLVM 为整个源代码生成 CFG

    LLVM 社区的任何人都知道是否有一种方法可以使用以下方法为整个输入源代码生成 CFG opt dot cfg foo ll bc 由于此函数为每个函数生成 CFG 因此函数之间的连接将被忽略 看来旧的分析工具已经贬值了 我想知道你是否找到
  • 使用 LLVM 内联特定函数调用

    给定一个llvm CallInst 我如何告诉内联器内联这个特定的调用 我可以将目标函数标记为AlwaysInline这将内联调用 但它也会内联每个调用 也许有某种方法可以在我发出特定调用时调用内联函数 内联基本块内的所有调用也可以 您可以

随机推荐