Файл меньше => Время компиляции больше?

#intel #compilation-time

#intel #время компиляции

Вопрос:

У меня есть несколько старых файлов C, написанных в 1999 году для более старых. Есть некоторые бесполезные части кода из-за новых методов программирования. Но у меня проблема.

  • Исходный файл => 640 строк -> 0,448 секунды
  • Новый файл => 581 строка -> 0,493 секунды

Я должен использовать компилятор Intel C версии 10 с оптимизацией O3. Конфигурация компилятора не настраивается, за исключением параметров и флагов в строке компиляции.

Эта разница во времени между исходным и новым файлом может быть незначительной, но при экстраполяции на 5000 файлов она суммируется.

Я не думаю, что это ошибка компилятора.

РЕДАКТИРОВАТЬ ДЛЯ УТОЧНЕНИЯ

Мне нужно оптимизировать время компиляции большого количества файлов C. Эти файлы содержат много старого кода, который бесполезен ( #if 0 , код препроцессора …). Чтобы удалить все эти вещи, я создал скрипт на Python, который проверяет все файлы и удаляет все нежелательные фрагменты кода.

Патч работает очень хорошо. Он удаляет весь код, который я хочу. Но время компиляции увеличивается. Я не понимаю, почему.

ПРАВКА # 2

Мой патч удаляет только часть кода, которая удаляется препроцессором, например #if 0 , и циклы слияния. 15 циклов с одной строкой и тем же максимумом хуже, чем 1 цикл с 15 строками внутри. Я провел много тестов для большого файла (70000 строк) и сэкономил 60% первоначального времени компиляции. Я не добавляю сложности или других операций. Это очистка кода.

Комментарии:

1. Не уверен, в чем заключается ваш вопрос, но в любом случае разница во времени настолько значительна даже для 5000 файлов. В вашем примере: исходный файл 37m 20s, новый файл 41m 5s = разница менее 4 минут. Это примерно на 10% больше, и это верно только в том случае, если каждый файл будет иметь одинаковое увеличение времени. В любом случае вам трудно помочь дальше, если вы не проясните вопрос.

2. LOC ! = Сложность, если новый код будет более оптимизируемым, это добавит времени, если оценки будут более сложными, это добавит времени, встроенные вызовы добавят времени, все добавляет времени. Компиляция — чрезвычайно сложный процесс, и мы не можем просто сказать: «Это файл меньшего размера, поэтому он должен компилироваться быстрее»

3. Продолжение. Возможно, ваши блоки #if 0 на самом деле препятствовали какому-то аспекту оптимизации, разбивая фрагменты кода. Чем отличается время выполнения программ? Фактический размер двоичного файла?

4. Чтобы ответить вам, я написал второе редактирование. Спасибо за ваше участие.