История изменений
Исправление quiet_readonly, (текущая версия) :
А почему умножение? Препроцессор выполняется до всего остального, и по большому счёту ему глубоко фиолетово, что внутри: шаблоны, классы, функции, спагетти.
В языках без препроцессора при парсинге используется закешированная таблица импорта, так что увеличение деклараций в два раза вызовет увеличение таблиц в ~2 раза, но почти не скажется на скорости парсера.
Препроцессор заставляет заново распарсить и проанализировать значительную часть деклараций (в предкомпилированный заголовок не всё удастся запихнуть), так что и скорость парсера падает в 2 раза. Да и таблицы импорта по размеру выйдут куда меньше, чем полный контекст препроцессора и парсера + AST, как в предкомпилированном заголовке.
Иначе говоря, увеличение размера всего кода в n раз вызовет замедление в ~n раз для языков с импортом и в ~n^2 раз для языков с препроцессором.
Исходная версия quiet_readonly, :
А почему умножение? Препроцессор выполняется до всего остального, и по большому счёту ему глубоко фиолетово, что внутри: шаблоны, классы, функции, спагетти.
В языках без препроцессора при парсинге используется закешированная таблица импорта, так что увеличение деклараций в два раза вызовет увеличение таблиц в ~2 раза, но почти не скажется на скорости парсера.
Препроцессор заставляет заново распарсить и проанализировать значительную часть деклараций (в предкомпилированный заголовок не всё удастся запихнуть). Да и таблицы импорта по размеру выйдут куда меньше, чем полный контекст препроцессора и парсера + AST, как в предкомпилированном заголовке.