Как код влияет на скорость компиляции?

Всё зависит от общего количества кода, количества зависимостей или сложности кода и использования сложных функций и т.д.?

Например что быстрее скомпилируется:

  • куча if
  • один switch

Ответы (1 шт):

Автор решения: Harry

Не формальный ответ (так и не пойму, зачем это надо...), но вот что дает Visual C++ 2022 на моей машине для такого странного кода

int n;
cin >> n;
switch(n)
{
case 0 : cout << "0\n"; break;
case 1 : cout << "1\n"; break;
case 2 : cout << "2\n"; break;
case 3 : cout << "3\n"; break;
case 4 : cout << "4\n"; break;

(и так 64000 раз) время компиляции + линковки по 10 запускам компилятора с оптимизацией — 22±2с, без оной 17.7±0.7с.

Те же 64000 раз в виде

int n;
cin >> n;

if (n == 0) { cout << "1\n"; }
if (n == 1) { cout << "1\n"; }
if (n == 2) { cout << "2\n"; }
if (n == 3) { cout << "3\n"; }
if (n == 4) { cout << "4\n"; }
if (n == 5) { cout << "5\n"; }
if (n == 6) { cout << "6\n"; }

(else не пустил, говорит, переполнение внутренностей компилятора :))

с оптимизацией 17.0±0.9с, без оной 14,7±0.3с

Выводы делайте сами.

Размер exe'шника почти одинаков, 2.5 Мб независимо от оптимизации.

→ Ссылка