Новая версия платформы MetaTrader 5 build 2815: Доступ к стакану цен из Python, улучшения в отладчике и профилировщике - страница 12

 
fxsaber:

При снятии галочек TaskManager показывает больше задач.

А где доказательства, что условия реально одинаковые?

Уберите все графики, чтобы не было фоновых потоков обслуживания, сделайте чистые запуски и продемонстрируйте результаты, пожалуйста.

 
Zmeev:

  Да вы что, какая там ошибка. У меня скрипты второй день стоят колом. 

  Терминал у меня работает на сервере, обновленный, последней версии. Я удалил отладочный вариант у себя на домашней машине и скопировал папку с терминалом с сервера, чтобы протестировать с чистого листа. 

Результат запуска скрипта (на всякий случай прикрепил скрипт Example еще раз, который запускаю)

Конфигурация: Windows 7 x64 SP1, CPU i5-4590, 3.30GHz, ОЗУ 16,0 ГБ. 

Терминал: Открытие Брокер Version 5.00 build 2815 26 Feb 2021

2021.03.10 13:46:20.525 Example (BR Splice,M5)      200.043046 sec

2021.03.10 13:55:58.630 Example (GOLD Splice,M5) 191.944905 sec

2021.03.10 14:03:50.990 Example (BR-4.21,H1)        191.339045 sec

2021.03.10 14:07:27.397 Example (GOLD-6.21,H1)    191.606125 sec

2021.03.10 14:12:10.978 Example (RTS Splice,M5)    192.699272 sec

2021.03.10 14:15:36.207 Example (RTS-6.21,H1)      194.348582 sec


Запустил скрипт и на серверной машине (правда, она слабенькая).

Конфигурация: Windows Server 2008 R2 Standard SP1 x64, Xeon E5-2658A, 2.20 GHz, ОЗУ 2,00 ГБ

Терминал: Открытие Брокер Version 5.00 build 2815 26 Feb 2021 (тот же, что и выше)

2021.03.10 14:20:58.577 Example (RTS Splice,M5) 453.577035 sec

На остальных инструментах не стал проверять, так как не  могу дожидаться столько времени, когда скрипт завершиться.


Что делать-то ? Это же явный косяк терминала. Время выполнения невменяемое.

При этом машины разные, опер. системы разные, т.е. дело явно не в системе и не в оборудовании. 

Остается только ваш терминал. Естественно, до последнего обновления этой проблемы не было.

  

Непонятно, что у вас за окружение, но вот результаты релизного 2815 билда и беты 2824:

Версия
Время
MetaTrader 5 x64 build 2815 started for MetaQuotes Software Corp.
Windows 10 build 19042, AMD EPYC 7551P 32-Core, 115 / 127 Gb memory, 1641 / 1861 Gb disk, IE 11, UAC, GMT+2
0.78610 sec
MetaTrader 5 x64 build 2824 started for MetaQuotes Software Corp.
Windows 10 build 19042, AMD EPYC 7551P 32-Core, 115 / 127 Gb memory, 1641 / 1861 Gb disk, IE 11, UAC, GMT+2

0.79576 sec

Скрипт выше пересобирался на каждом билде по отдельности. Код операций над строками не менялся уже давно.

Попробуйте обновиться на последнюю бету и попробуйте снова.

 
Ясно в чем дело, ваш код:
      Result = Result + " Строка" + " Строка" + " Строка" + " Строка" + " Строка" + " Строка" +

против 

      Result += " Строка" + " Строка" + " Строка" + " Строка" + " Строка" + " Строка" +

В первом случае у вас неоптимизированная множественная перекладка/пересоздание большого количества временных переменных, достигающих 1.8 миллиона символов в одной временной переменной. При таких длинных строках идет дорогая работа с хипом памяти.

Во втором случае код оптимизирован и работает гораздо лучше.

Именно второй вариант я тестировал.


Совет: пишите разумный код и не делайте многомиллионных циклов перевыделения памяти.

 
Renat Fatkhullin:

В первом случае у вас неоптимизированная множественная перекладка/пересоздание большого количества временных переменных, достигающих 1.8 миллиона символов в одной временной переменной. При таких длинных строках идет дорогая работа с хипом памяти.

Этот вариант запускал. Непонятно, почему дебаг-версия отрабатывает быстро.

Ну и, конечно, хороший пример, чтобы еще улучшить компилятор.

 
Renat Fatkhullin:

Непонятно, что у вас за окружение, но вот результаты релизного 2815 билда и беты 2824:

Версия
Время
MetaTrader 5 x64 build 2815 started for MetaQuotes Software Corp.
Windows 10 build 19042, AMD EPYC 7551P 32-Core, 115 / 127 Gb memory, 1641 / 1861 Gb disk, IE 11, UAC, GMT+2
0.78610 sec
MetaTrader 5 x64 build 2824 started for MetaQuotes Software Corp.
Windows 10 build 19042, AMD EPYC 7551P 32-Core, 115 / 127 Gb memory, 1641 / 1861 Gb disk, IE 11, UAC, GMT+2

0.79576 sec

Скрипт выше пересобирался на каждом билде по отдельности. Код операций над строками не менялся уже давно.

Попробуйте обновиться на последнюю бету и попробуйте снова.

А где можно найти  MetaTrader 5 x64 build 2824 ?
 
Zmeev:
А где можно найти  MetaTrader 5 x64 build 2824 ?
Бета ищется в меню справки.
 
fxsaber:

Этот вариант запускал. Непонятно, почему дебаг-версия отрабатывает быстро.

Ну и, конечно, хороший пример, чтобы еще улучшить компилятор.

Потому что в дебаге совершенно другой движок и другая работа с хипами памяти.

 
Renat Fatkhullin:

Потому что в дебаге совершенно другой движок и другая работа с хипами памяти.

Тогда логично для string на этапе компиляции делать автоматическую замену.

Str = Str + Addon; -> Str += Addon;

Наверное, для простых типов сейчас она делается.

 
fxsaber:

Тогда логично для string на этапе компиляции делать автоматическую замену.

Наверное, для простых типов сейчас она делается.

Подозреваю, что в общем случае найдутся какие-то подводные камни, побочные эффекты. А насчёт интеллектуальной замены - компилятор не обязан быть таким интеллектуальным. Тут сильно подумать надо.

 
Renat Fatkhullin:

Потому что в дебаге совершенно другой движок и другая работа с хипами памяти.


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

Под отладчиком, без оптимизации у меня также невменяемое время выполнения (на последней версии).  Это я сразу и заметил, так как на предыдущих версиях этого не было.

Т.е., похоже,  что в предыдущих версиях этот момент под отладчиком как-то решался, теперь же это не прокатывает.

Вообще, до оптимизации я не добрался, так как изначально это работало быстро и нужды не было.

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