#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. Чтобы ответить вам, я написал второе редактирование. Спасибо за ваше участие.