Разработчикам: почему 32 битный терминал загружает эксперты быстрее чем 64 битный ?

 

Заметил такую стаибльную неприятную особенность.

Если эксперт запускается в 64 битном терминале, то его загрузка идет раза в 3 медленнее, нежели в 32 битном.
То есть от момента помещения его на чарт и до момента когда он непосредственно начинает работать проходит аж 5 секунд.
При этом в 32 битном загрузка занимает максимум 1-2 секунды.

Вторая фича в том, что если эксперт был скомпилирован в 32 битном терминале, и потом этот ex5 запустить в 64 битном, то он загружается еще дольше.  может и до 7 секунд пройти.

Причем на это не влияет наличие внешних dll.  Ни объем кода. Ни наличие встроенных ресурсов.
Например в 64 битном терминале мелкий эксперт, без DLL, без внутренних ресурсов загружается 5 секунд.
А тяжелый  DLL и с ресурсами может загрузится за три.

В общем загадка какая-то. Поясните пожалуйста причину таких задержек на 64 битном терминале.

 

Скорее всего Вы говорите о моменте инициализации эксперта. Причем в случае, когда в x64 нет активного живого подключения к торговому серверу (в в 32 битной есть).

Инициализация эксперта происходит только после синхронизации рыночного окружения или через 5 секунд ожидания оного.

 
Renat:

Скорее всего Вы говорите о моменте инициализации эксперта. Причем в случае, когда в x64 нет активного живого подключения к торговому серверу (в в 32 битной есть).

не не, тот вопрос с инициализацией при отсутствии связи мы уже обсуждали.

Инициализация эксперта происходит только после синхронизации рыночного окружения или через 5 секунд ожидания оного.

Сейчас терминал подключен.

Как я писал - разные эксперты с разной скоростью инициализируются.  Не могу найти закономерность в этом времени ожидания.

Но то что 64 битные проигрывают не менее чем раза в два, по сравнению с 32 битными - это факт.  вот только почему?..


Причем сейчас странность еще обнаружил. 
на 32 битной как обычно загружается за 1-2 секунды.  на 64 битной за 5 секунд.
Затем просто перекомпилировал код. Теперь на 64 битной он вообще загружается 10 секунд.  На 32 битной так и остался 2 секунды.  Похоже что скорость зависит и от результирующей компиляции.

В общем непонятно, а главное не удобно с такими задержками работать.

 

Проверьтесь еще раз, пожалуйста.

Я специально только что проверил и эксперты в x64 стартуют мгновенно, если есть соединение с серверов. Когда нет соединения, то задержка около 5 секунд, что является штатным таймаутом ожидания синхронизации рыночного окружения.

Для проверки используйте простого эксперта:

int  OnInit() { Alert("Start"); return(0); }
void OnTick() { Alert("Tick");            }
Может Вы под "загружается" имеете в виду что-то другое?
 
Renat:


Может Вы под "загружается" имеете в виду что-то другое?

имеется ввиду момент от нажатия кнопки ОК на окне запуска эксперта.

до момента OnInit

То есть имеется длинная пауза когда эксперт уже типа висит в верхнем правом углу, но еще не стартанул (OnInit  и т.д.)



Получается, что загрузка эксперта в память (до момента OnInit) на 64 битных терминала происходит намного дольше.

PS
Конечно, OnInit выполняется очень быстро. Паузы между  Alert("Start");  и Alert("Tick"); не наблюдаю

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 

Проверьте еще раз.

У меня срабатывание OnInit (появление первого алерта) происходит мгновенно. Конечно же нет никакой речи о времени работы самой функции OnInit. Задержка в 5 сек стабильно появляется, только если счет не залогинен, но это так и должно быть.

Протестируйте предложенный мною код, пожалуйста.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Renat:

Проверьте еще раз.

У меня срабатывание OnInit (появление первого алерта) происходит мгновенно.

Протестируйте предложенный мною код, пожалуйста.

в том коде у меня тоже все мгновенно.

Но попробуйте например такой эксперт.  В 32 бита он грузится тоже мгновенно.  В 64 бита грузится за 4 секунды. Сам эксперт компилировался в 64 битном терминале.


PS.
в эксперте есть зависимости от dll, но используются только из user32::GetCursorPos и GetState
все остальные функции подтянулись из-за включения библиотек классов, но не используются.

Файлы:
CalcPad.ex5  246 kb
 
Спасибо за пример, сегодня проверим.
 
Renat:
Спасибо за пример, сегодня проверим.
помогла ли программка найти причину?
 
Еще не смотрел, задачу в сервисдеск поставил сразу.
Причина обращения: