Оптимизация кода MQL4

 
Привет! Столкнулся с проблемой оптимизации работы советника... Как-то раньше не приходилось этим заниматься... Так вот, есть ли в Мета Эдиторе какой либо помощник для этого дела? Или вообще как делается оптимизация кода? (не путать с оптимизацией в тестере)))
 
Maksim Neimerik:
Привет! Столкнулся с проблемой оптимизации работы советника... Как-то раньше не приходилось этим заниматься... Так вот, есть ли в Мета Эдиторе какой либо помощник для этого дела? Или вообще как делается оптимизация кода? (не путать с оптимизацией в тестере)))

Профилировщик. С его помощью находите узкие места и уже дальше думаете, как ускорить их выполнение.

 
Ihor Herasko:

Профилировщик. С его помощью находите узкие места и уже дальше думаете, как ускорить их выполнение.

Понял, спасибо!
 
Если я правильно понимаю, то эта оптимизация снижает нагрузку на железо (ОЗУ, ЦП), правильно?
 
Maksim Neimerik:
Если я правильно понимаю, то эта оптимизация снижает нагрузку на железо (ОЗУ, ЦП), правильно?

Если вопрос является про оптимизацию в принципе (т. е. что это такое), то да, уменьшение нагрузки на процессор и, как следствие, ускорение выполнения программы. Про ОЗУ - нет. Количество памяти, занимаемое программой, слабо коррелирует со скоростью ее выполнения. 

 
Ihor Herasko:

Если вопрос является про оптимизацию в принципе (т. е. что это такое), то да, уменьшение нагрузки на процессор и, как следствие, ускорение выполнения программы. Про ОЗУ - нет. Количество памяти, занимаемое программой, слабо коррелирует со скоростью ее выполнения. 

А возможно вообще как-то снизить нагрузку на ОЗУ?

 
Maksim Neimerik:

А возможно вообще как-то снизить нагрузку на ОЗУ?

Нет на него нагрузки. Совсем нет. Извини, брат. 

 
а что такое оптимизация?
это типа инты чарами заменить, а даблы флоатами?
 
исходите из самых тормозящих процессов в вашем коде и оптимизируйте их (либо меняйте логику обращения, либо частоту запроса) - расчёт индикаторов, обращение к файлам чтение/запись, обращение к глобальным переменным терминала когда их много, обращение к объектам на графике когда их много, постоянный пересчёт истории ордеров и в конце какой нибудь гигантский массив наяривает перерасчёт на каждом тике
 
Алексей Тарабанов:

Нет на него нагрузки. Совсем нет. Извини, брат. 

Ну как же нет?... А почему на виртуальном хостинге у меня только по некоторым советникам перерасход ресурсов ОЗУ?
 
Maksim Neimerik:
Ну как же нет?... А почему на виртуальном хостинге у меня только по некоторым советникам перерасход ресурсов ОЗУ?

Потому, что памяти мало, а метатрейдер ее жрет будь здоров. Каждый бар в мт4 - это, если правильно посчитал, 44 байта. Плюс, на каждый буфер вызванного, при работе эксперта или установленного на график индикатора, еще 8 байт и все это умножить на количество баров истории, пусть 16000 будет, а бывает и 32k. Прямо сейчас, у меня 4-ка, с одним запущенным графиком EURUSD H1, без запущенных индикаторов и экспертов, забирает 55 МБ.

Купите на хостинге дополнительные ресурсы и будет Вам счастье.

Причина обращения: