我开始使用 Vim 进行 C++ 竞争性编程,但我遇到了问题。对于编译,我正在使用教程中的 MinGW g++ 编译器。代码编译,但我有一个问题,任何程序编译和运行都非常慢。例如编译和运行下一个代码:
#include <iostream>
using namespace std ;
int main()
{
cout<<"Hello World"<<endl;
}
(有史以来最简单的程序)编译和运行需要 6 到 8 秒。
在 Vim 本身我有这个快捷方式:
autocmd filetype cpp nnoremap <C-r> :w <bar> !g++ -std=c++14 -Wall % -o %:r && %:r.exe <cr>
你能帮我找出为什么我有这样的问题吗?例如 William Lin(有竞争力的程序员也使用 Vim,我的 shortuc 与他的相似,但他的程序立即运行)。
很遗憾这么说,但问题出在防病毒软件中。因为我认为它会减慢检查某些病毒的过程
基本上 william 和大多数其他 CPers 使用所谓的预编译头文件,来加快 compilation 时间,而不是 execution。 为此,首先转到您的位文件夹。我使用 msys2 安装,所以这是我的路径:
C:\msys64\mingw64\include\c++\12.1.0\x86_64-w64-mingw32\bits
当你进入这个文件夹时,你会看到一个名为
stdc++.h
的文件。这是每次在源代码中包含 bits/stdc++.h
时都会编译的文件。
编译时间增加,因为它还包括一些通常不使用的不必要的标头。但是为了可读性和短代码,程序员一般会包含这个文件。
现在要预编译此文件,请在与 bits 相同的文件夹中打开您的终端,或者在 Windows 中,您可以单击地址栏并键入 cmd,然后按 Enter 以在同一文件夹中打开命令提示符。
之后运行以下命令
g++ stdc++.h -std=c++17
。尽管您可以将 c++17 部分更改为您喜欢的任何部分(14 或 20),但我建议使用 c++17,因为它受到大多数新在线评委的支持并且被普遍使用。您将看到在您的文件夹中创建了一个 stdc++.gch
文件,该文件将很大(c++17 ~93 MB,c++20 ~103 MB)。
现在只要你编译你的文件。不会花更长的时间。