Ускорение времени компиляции С++ кода при уменьшении включений

172
01 мая 2018, 01:32

Говорят, что удаление ненужных включений ускоряет сборку проекта. Я решил проверить это на простом примере.

#include <iostream>
int main()
{
    std::cout << "Hello world" << std::endl;
    return 0;
}

запускаем с флагом -ftime-report

TOTAL : 0.85 0.42 1.30
33358 kB

теперь продублирем 100 раз #include

    #include <iostream>
   ...
     #include <iostream>

    int main()
    {
        std::cout << "Hello world" << std::endl;
        return 0;
    }

Итог:

TOTAL : 0.87 0.51 1.45
33358 kB

Eсли запустить прекомпиляцию gcc -E main.cpp > maon.precom.cpp , то мы увидим, что дублирование не включаются. При каких тогда условиях можно почувствовать ускорение? Как же тогда воспроизвести такой сценарий?

Answer 1

Повторное включение одного заголовочного файла игнорируется из-за стражей (include guard). Попробуйте включать разные файлы. Особенно разница должна быть заметна при использовании библиотек boost, использующих boost::mpl.

READ ALSO
Считать массив структур из файла

Считать массив структур из файла

мне нужно считать данные из файла в массив структур, вот мой код - узнаю длину файла(количество строк) и потом считываю, но получаю на выходе...

203
Ошибки компоновщика LNK2005 LNK1169

Ошибки компоновщика LNK2005 LNK1169

Решил попробовать поэкспериментировать создать проект, записав функцию в отдельный файл, однако произошла для меня неведомая ошибкаТестировал...

296
Как устанавливать размер терминала ncurses

Как устанавливать размер терминала ncurses

Возможно ли на ncurses установить размер терминала, в котором выполняется программа?

196