2013-07-02 4 views
1

Есть ли какое-либо эмпирическое правило для определения «разумного» количества времени компиляции для программы? Очевидно, что это несколько субъективно, что означает «разумный», но при прочих равных условиях консольный «Hello, World» не должен составлять, например, 2 часа. Чтобы предоставить конкретный пример -Оценка времени компиляции?

Учитывая, что хранилище C-кода, X # строк кода, уровень оптимизации gcc Y, ... есть ли разумный способ предсказать количество времени для компиляции? И любые мнения о том, что такое «разумное» количество времени?

Разъяснение

Параметры, представляющие интерес здесь только код зависит, НЕ процессора, памяти, зависит от сети.

+2

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

ответ

4

Для наиболее разумных программ, построенных из разумных источников на разумных машинах разработки (2 + GHz, 4 + GiB RAM), тогда ответ на компиляцию одного исходного файла должен быть «несколько секунд». По моему опыту, что-либо в диапазоне минут обычно указывает на проблему. Время, затраченное на компиляцию полной программы, затем контролируется количеством файлов для компиляции; для компиляции 20 000 файлов требуется больше времени, чем при сборке 20 - примерно в тысячу раз. (Разумные источники обычно имеют исходные файлы под линиями 10k и заголовки под линиями около 1k - существует множество исключений для обоих ориентиров, и оба числа довольно щедры.)

Но все зависит от. Если ваши заголовки находятся в сетевой файловой системе, компиляция, скорее всего, будет медленнее, чем если бы они находились в локальной файловой системе - если ваш локальный диск не работает медленно, сеть невероятно быстро и поддерживается SSD, и ... oh, gosh; есть так много факторов, что невозможно дать хороший ответ!

+1

И, возможно, вы добавили, время компиляции является, как правило, повышающей функцией уровня оптимизации. –

0

Другие факторы, помимо один упоминается в ответ Джонатана являются: Программирование Язык, стиль кодирования, Compliler версии, PCODE или бинарного поколения и т.д.

Смежные вопросы