Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, подскажите пожалуйста, я тут программу пишу и столкнулся с тем, что чем больше она становится, тем дольше компилируется (вот это новость!)
Пока что дошел до 15 секунд компиляции после нажатия F7. Согласен, немного и жить можно. Хотя уже начинает раздражать.
Часто компилирую файл и хочу сразу видеть результат своих правок. Уже успеваю браузер поскроллить, пока компилируется )
Программа вырастет еще в 2-3 раза по объему кода. А ждать минуту после F7 это уже зашквар.
Хотелось бы узнать, если кто-то знает, что влияет на скорость компиляции?
Например, в этой программе я делаю много #include файлов, мне так удобнее ориентироваться, влият ли это на скорость компиляции или лучше все функции пихать в один файл?
Или например, влияет ли то, какие я использую типы данных? Я имею ввиду, вот я использую double там где можно было бы обойтись float. Может ли это влиять на скорость компиляции?
Мне просто еще кажется, что вот я пишу несколько дней, пишу и скорость компиляции висит, например на 10 секундах. А потом бах и сразу 15 секунд. А что я такого в код добавил, что замедлило компиляцию на 5 секунд, я не знаю.
Может кто-то тестил, или просто эта информация доступна, я просто не нашел, или есть какие-то стандарты в этом вопросе?
Благодарю за ответы
У диска доступ не нано-, а порядка 15 миллисекунд - к каждому кластеру, если они не подряд (файл фрагментирован), к записям в каталоге и т.п.
Конечно, кэши и упреждающее чтение это сильно сглаживают, но вот на этом диски проигрывают в первую очередь, если не идёт чтение большого к-ва секторов подряд.
вы шутите? пол секунды или 0,2 будет. какое отношение имеет к 15?
вы шутите? пол секунды или 0,2 будет. какое отношение имеет к 15?
Я про быстродействие дисков в принципе, без привязки к их влиянию на скорость компиляции(похоже, оно тут в целом невелико).
Как только мы выходим за рамки ситуации линейного чтения, начинает влиять скорость доступа. Для современных дисков, в многозадачной среде, скорость "работы диска" больше определяется скоростью доступа, чем скоростью трансфера. И вот переход от вращающихся блинов к твердотельному накопителю практически обнуляет задержки доступа, что даёт огромный выигрыш даже при сравнимой скорости трансфера.
Прибыльный советник не бывает сложным и громоздким
Смотря, с чем сравнивать.
А сколько кода? Может, кода не так много, а с компом что-то?
Насчитал 4000 строк примерно, не вычитая пустых строк.
Так же 35 include файлов.
Еще из того, что возможно, может влиять, но это только мои предположения:
- Использую несколько крупных структур (по 300 строк кода и несколько уровней вложенности), которые не заключены в классы и к которым все время обращаются все части программы.
- Использую большое количество циклов, которые все время прогоняют упомянутые структуры и что-то из них берут, что-то в них дописывают.
- Пишу большое количество комментариев в коде.
Еще из наблюдений. Может, мне кажется, но чувство, что длительность компиляции растет геометрически с ростом количества кода.
Т.е. не арифметически, а геометрически. Будто каждая новая сотня кода увеличивает длительность компиляции больше, чем предыдущая сотня кода.
Благодарю всех за ответы и за участие!
---
Так же еще подумал. Использую #include <Trade\Trade.mqh> и #include <ChartObjects\ChartObject.mqh>.
Потестил скорость компиляции без них. Скорость компиляции не уменьшилась.
---
Еще гипотеза:
Может ли MetaEditor что-то себе в кэш сохранять и каждый раз этот кэш перечитывать и дописывать? Из-за чего длительность компиляции будет постоянно расти из-за роста этого кэш файла?
да
вам уже два обходных варианта предложили - отладка и mqh файлы
Спасибо за ответ. Про mqh файлы не отписался. У меня весь проект в mqh файлах. В основном mq5 файле всего строк 100. Так что в моем случае, этот пункт скорее всего не влияет.
Про отладку, себе пометил. Пока не изучал этот момент. Совет точно дельный и у меня в планах есть освоить этот инструмент. Спасибо.
Поскольку мой проект компилируется скриптом, то я сразу заметил, что время компиляции увеличилось примерно в 2 раза.
Это начиная с версии Metaeditor, в которой появились новые изображения значков
Итого (весь проект = 113 сек)
Кол-во строк проекта не считал и насчет длительности компиляции не парюсь ;-)
Спасибо за ответ. Про mqh файлы не отписался. У меня весь проект в mqh файлах. В основном mq5 файле всего строк 100. Так что в моем случае, этот пункт скорее всего не влияет.
вы не поняли. результирующий файл должен быть с расширением .mqh
попробуйте ради прикола скомпилировать один и тот же код в .mq5 и в .mqh файле