最近,我正在深入优化我的 C++ 代码,因此开始尝试使用编译器资源管理器。由于我主要使用 Visual Studio 在 Windows 上进行开发,因此我使用了 msvc 编译器。
在某些时候 msvc 失控了。经过一番摆弄之后,我可以将其缩小到 iostream 标头,这应该是 I/O ( SL.io.3 ) 的首选。
#include <iostream>
int main() {
std::cout << "Hello World!\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
而 gcc 或 clang 的总输出(main + 一个调用一些ios_baseinit 函数的静态初始化器)总共有大约 20 行汇编代码(在 Godbolt 编译器浏览器过滤掉指令和注释之后)。
MSVC 将其分解为 4000。这些行中的大多数是单独的函数;MSVC 对main自身的定义是 7 条指令,而 gcc/clang 则是 8 条指令。(使用 GNU/Linux 的 gcc/clanglibstdc++将额外长度的 arg 传递给 cout 运算符重载函数,而不是像 MSVC 在使用自己的 C++ 库时那样只传递 2 个指针。)
如果我使用类似的东西puts,MSVC 的总输出相当紧凑,可与 gcc/clang 相媲美,就像 …
我尝试按照此处的建议使用以下命令安装 openjdk-8-jdk :
sudo apt-get install openjdk-8-jdk
Run Code Online (Sandbox Code Playgroud)
但找不到该包。我确实在packages.debian.org上手动找到了它,并尝试告诉apt也从那里加载,按照该包的镜像页面上的建议,通过将以下行添加到/etc/apt/sources.list
deb http://ftp.de.debian.org/debian sid main
Run Code Online (Sandbox Code Playgroud)
但 apt 仍然找不到该包。我也尝试改变
还是没有运气。