MinGW g++ 编译速度极慢

问题描述 投票:0回答:2

我开始使用 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 与他的相似,但他的程序立即运行)。

c++ vim g++ mingw
2个回答
1
投票

很遗憾这么说,但问题出在防病毒软件中。因为我认为它会减慢检查某些病毒的过程


0
投票

基本上 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)。

现在只要你编译你的文件。不会花更长的时间。

© www.soinside.com 2019 - 2024. All rights reserved.