Что влияет на скорость компиляции программы? - страница 3

 
yar.forex:
Здравствуйте, подскажите пожалуйста, я тут программу пишу и столкнулся с тем, что чем больше она становится, тем дольше компилируется (вот это новость!)

Пока что дошел до 15 секунд компиляции после нажатия F7. Согласен, немного и жить можно. Хотя уже начинает раздражать.
Часто компилирую файл и хочу сразу видеть результат своих правок. Уже успеваю браузер поскроллить, пока компилируется )

Программа вырастет еще в 2-3 раза по объему кода. А ждать минуту после F7 это уже зашквар.

Хотелось бы узнать, если кто-то знает, что влияет на скорость компиляции?
Например, в этой программе я делаю много #include файлов, мне так удобнее ориентироваться, влият ли это на скорость компиляции или лучше все функции пихать в один файл?
Или например, влияет ли то, какие я использую типы данных? Я имею ввиду, вот я использую double там где можно было бы обойтись float. Может ли это влиять на скорость компиляции?

Мне просто еще кажется, что вот я пишу несколько дней, пишу и скорость компиляции висит, например  на 10 секундах. А потом бах и сразу 15 секунд. А что я такого в код добавил, что замедлило компиляцию на 5 секунд, я не знаю.
Может кто-то тестил, или просто эта информация доступна, я просто не нашел, или есть какие-то стандарты в этом вопросе?

Благодарю за ответы
Прибыльный советник не бывает сложным и громоздким 
 
JRandomTrader #:

У диска доступ не нано-, а порядка 15 миллисекунд - к каждому кластеру, если они не подряд (файл фрагментирован), к записям в каталоге и т.п.

Конечно, кэши и упреждающее чтение это сильно сглаживают, но вот на этом диски проигрывают в первую очередь, если не идёт чтение большого к-ва секторов подряд.

вы шутите? пол секунды или 0,2 будет. какое отношение имеет к 15?

 
Fast235 #:

вы шутите? пол секунды или 0,2 будет. какое отношение имеет к 15?

Я про быстродействие дисков в принципе, без привязки к их влиянию на скорость компиляции(похоже, оно тут в целом невелико).

Как только мы выходим за рамки ситуации линейного чтения, начинает влиять скорость доступа. Для современных дисков, в многозадачной среде, скорость "работы диска" больше определяется скоростью доступа, чем скоростью трансфера. И вот переход от вращающихся блинов к твердотельному накопителю практически обнуляет задержки доступа, что даёт огромный выигрыш даже при сравнимой скорости трансфера.

 
А сколько кода? Может, кода не так много, а с компом что-то?
 
osmo1709 #:
Прибыльный советник не бывает сложным и громоздким 

Смотря, с чем сравнивать.

 
Dmitry Fedoseev #:
А сколько кода? Может, кода не так много, а с компом что-то?

Насчитал 4000 строк примерно, не вычитая пустых строк. 
Так же 35 include файлов.

Еще из того, что возможно, может влиять, но это только мои предположения:
- Использую несколько крупных структур (по 300 строк кода и несколько уровней вложенности), которые не заключены в классы и к которым все время обращаются все части программы.
- Использую большое количество циклов, которые все время прогоняют упомянутые структуры и что-то из них берут, что-то в них дописывают.
- Пишу большое количество комментариев в коде.

Еще из наблюдений. Может, мне кажется, но чувство, что длительность компиляции растет геометрически с ростом количества кода.
Т.е. не арифметически, а геометрически. Будто каждая новая сотня кода увеличивает длительность компиляции больше, чем предыдущая сотня кода.

Благодарю всех за ответы и за участие!

---
Так же еще подумал. Использую #include <Trade\Trade.mqh> и #include <ChartObjects\ChartObject.mqh>. 
Потестил скорость компиляции без них. Скорость компиляции не уменьшилась.

---
Еще гипотеза:
Может ли MetaEditor что-то себе в кэш сохранять и каждый раз этот кэш перечитывать и дописывать? Из-за чего длительность компиляции будет постоянно расти из-за роста этого кэш файла?

 
TheXpert #:

да

вам уже два обходных варианта предложили - отладка и mqh файлы

Спасибо за ответ. Про mqh файлы не отписался. У меня весь проект в mqh файлах. В основном mq5 файле всего строк 100. Так что в моем случае, этот пункт скорее всего не влияет.

Про отладку, себе пометил. Пока не изучал этот момент. Совет точно дельный и у меня в планах есть освоить этот инструмент. Спасибо.

 

Поскольку мой проект компилируется скриптом, то я сразу заметил, что время компиляции увеличилось примерно в 2 раза.

Это начиная с версии Metaeditor, в которой появились новые изображения значков

Кусок результатов компиляции

Итого (весь проект = 113 сек)

Кол-во строк проекта не считал и насчет длительности компиляции не парюсь ;-)

 
yar.forex #:

Спасибо за ответ. Про mqh файлы не отписался. У меня весь проект в mqh файлах. В основном mq5 файле всего строк 100. Так что в моем случае, этот пункт скорее всего не влияет.

вы не поняли. результирующий файл должен быть с расширением .mqh

попробуйте ради прикола скомпилировать один и тот же код в .mq5 и в .mqh файле

 
Чем отличается mqh от mq5. В результате компиляции mq5 получается ЗАШИФРОВАННЫЙ ex5. Вот на эту защиту + сборку и тратится столько времени (ИМХО)