Почему использование предварительно скомпилировало заголовки (C/C++)?

Здесь говорится, что хорошей практикой является проверка, установлен ли referrer на первое место. Поэтому, если вы используете следующий код, вы будете перенаправлены на последнюю страницу, если задан реферер, или на настроенный вами homeUrl, если обратный URL не был задан ранее.

return $this->goBack((!empty(Yii::$app->request->referrer) ? Yii::$app->request->referrer : null));

goBack () подробности

сведения о перенаправлении

42
задан Peter Mortensen 29 June 2019 в 18:05
поделиться

5 ответов

Он составляет лот быстрее. Компиляция C ++ без них занимает годы. Попробуйте сравнить время в большом проекте!

39
ответ дан 26 November 2019 в 23:23
поделиться

Поэтому вам не нужно компилировать их каждый раз при сборке вашего проекта. Они используются для системных заголовков, которые не будут изменены.

7
ответ дан 26 November 2019 в 23:23
поделиться

In C/C++, the #include mechanism is a textual copy of the file specified into the current file. Headers include other headers (which include yet other headers), so when you do a #include, it could be adding tens of thousands of lines of C++ into each cpp file (or cxx, c, whatever), all of which need to be compiled each time. This can be a sever bottleneck for large projects.

Precompiled headers speed this up by compiling each header once, then including that compiled state into the cpp they are included in.

56
ответ дан 26 November 2019 в 23:23
поделиться

Re: ваше текущее использование, если у вас есть цель с очень большим количеством файлов, все же может быть быстрее использовать PCH таким образом - попробуйте выключить их, чтобы узнать. Это зависит: если у вас много собственных заголовков, и вы меняете их нечасто, и у вас очень большое количество исходных файлов, которые вы меняете гораздо чаще, то использование PCH сократит время восстановления.

Но нормальный совет - помещать в PCH только те вещи, которые никогда не меняются, потому что есть определенные накладные расходы на создание самого PCH. Если вы активируете это при каждой перестройке (постоянно настраивая один из заголовков), использование PCH может замедлить перестройку.

10
ответ дан 26 November 2019 в 23:23
поделиться

Ускоряет компиляцию.

Когда вы включаете заголовки из других проектов, вы не ожидаете их изменения. Если вы поместите их в предварительно скомпилированный заголовок, то этот код не придется перекомпилировать при внесении изменений в исходный код. Это уменьшает повторяющуюся компиляцию неизмененного кода, ускоряя время компиляции.

7
ответ дан 26 November 2019 в 23:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: