Всем привет.
Я сижу под линем и занимаюсь спортивным программированием. Причем задачки я решаю на C++, который, как известно, наиболее удобен для этой цели. И я заметил, что G++ компилит мой source.cpp... Хм, не очень быстро. Если что, я пишу в Eclipse CDT на моем ноутбуке. Итак, я пробую скомпилировать такую прогу:
#include <iostream>
using namespace std;
int main()
{
long long a, b;
cin >> a >> b;
cout << a + b;
return 0;
}
И это компилится за 0.5 с (вроде быстренько).
Теперь уберем iostream, а вместо нее добавим bits/stdc++.h, который, как известно, подключает все разом. Получаем такой код:
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long a, b;
cin >> a >> b;
cout << a + b;
return 0;
}
И он компилится уже 1.2 секунды за счет bits/stdc++.h. Ок. Теперь ставим компилятору флаг -std=c++11 (все-таки одиннадцатые плюсы есть за что любить), код оставляем тем же. Компилим, видим результат: 3.7 секунды. Ну... Это уже не 0.5, да и вообще следует заметить, что 3.7 секунды — это лучший результат. Более крупные коды будут компилится от 4 до 6 секунд. Это уже точно не 0.5 секунды.
Почему это критично? Потому что две компиляции кода — это уже в среднем 10 секунд. Три компиляции — 15 потерянных секунд. Для контеста, где плюс-минус минута играет роль, это критично. Я видел, что у некоторых участников компиляция при тех же флагах на примерно таком же железе занимает 1-2 секунды.
Мой вопрос сообществу звучит просто. Можно ли как-то ускорить компиляцию C++11 с помощью G++? Я думаю, это поможет не только мне.