【发布时间】:2021-05-27 08:40:13
【问题描述】:
使用 Compiler Explorer (https://godbolt.org/) 比较简单程序的汇编输出时,为什么 D 语言汇编输出与 C 或 C++ 输出相比如此之长。 C、C++ 和 D 的简单 square 函数输出相同,但 D 输出有额外的行,在源代码中将鼠标悬停在 square 函数上时不会突出显示。
- 这些额外的行是什么?
- 如何从生成中删除这些行?
假设我在 C++ 和 D 中都有 https://godbolt.org/z/64EsWo5Ke 模板函数,D 的 Intel asm 输出为 29309 行,而 C++ Intel asm 输出仅为 73 行。
【问题讨论】:
-
当你打开godbolt.org链接时,square函数已经存在了。您只需要将语言从 C++ 更改为 C 或 D。
-
默认输出未优化。比较那些未优化的代码是没有意义的
-
Godbolt 在手机上无法使用。请将问题中的代码和汇编输出作为代码格式的文本发布。
-
我投票结束这个问题,因为在没有启用任何优化选项的情况下询问性能/基准测试是荒谬的。请编辑问题以在所有使用的语言中使用启用了优化器的代码...
-
D码默认是静态链接的。我相信这就是为什么你会看到这么长的输出。
标签: c++ assembly x86 d compiler-explorer