Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике - страница 32

 
Renat Fatkhullin:

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

Штатные функции не инлайнятся, включая очень дорогие.

 
fxsaber:

Штатные функции не инлайнятся, включая очень дорогие.

Инлайнится достаточное количество мелких системных/crt функций. Мы методично выносим часть crt кода в прямой инлайнинг.

Это дает реальное ускорение.

 
Renat Fatkhullin:

Инлайнится достаточное количество мелких системных/crt функций. Мы методично выносим часть crt кода в прямой инлайнинг.

Это дает реальное ускорение.

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

Поэтому важно видеть вызовы штатных функций (которые не инлайнятся) в штуках, времени и т.д.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 2755: Улучшения в окне котировок и отладчике

fxsaber, 2021.02.05 13:02

Возможно ли пару-тройку тормозных примеров, где профилировщик показывает проблему?

И демонстрация исправления тормозного исходника, чтобы профилировщик показал, что тормоза убраны?

 
Renat Fatkhullin:

То есть, если видите много }, значит знатно мусорите и это серьезная проблема производительности.

Ок. Значит, какую-никакую полезную информацию я уже вижу в своём профилировании. Но, разве, если я буду явно уничтожать динамические объекты перед выходом из функции, это будет быстрее?

 
Edgar Akhmadeev:

Ок. Значит, какую-никакую полезную информацию я уже вижу в своём профилировании. Но, разве, если я буду явно уничтожать динамические объекты перед выходом из функции, это будет быстрее?

Чем меньше динамически пересоздаваемых обьектов, тем лучше.

Архитектурно старайтесь переиспользовать обьекты, а не пересоздавать.
 

Добрый день!

Может не туда пишу, поправьте, если что.

Не получается подключить локальных агентов по сети. Есть два ноута с win7-64. Пробовал на обоих устанавливать и отдельно метатестер и запускать его из папки мт5, службы устанавливаются, а при поиске по сети мт5 видит только те, что на его машине установлены. Пробовал добавлять агентов вручную. В журнале появляется следующая запись:

2021.02.06 17:35:11.870 Agent_192.168.0.51:2000 connecting to 192.168.0.51:2000

2021.02.06 17:35:11.871 Agent_192.168.0.51:2001 connecting to 192.168.0.51:2001

2021.02.06 17:35:21.948 Agent_192.168.0.51:2000 authorization on still connected agent

2021.02.06 17:35:21.948 Agent_192.168.0.51:2000 connection closed

2021.02.06 17:35:21.948 Agent_192.168.0.51:2001 authorization on still connected agent

2021.02.06 17:35:21.948 Agent_192.168.0.51:2001 connection closed

При установке агентов в папке Tester появляются папки вида "Agent-0.0.0.0-2000". Хотя метатестер в окне пишет реальный ip ноута. Пробовал устанавливать агентов используя консольные команды, в папке Tester появляются папки вида "Agent-192.168.0.51-2000", но по сети все равно агенты не находятся. В окне метатестера написано что агенты запущены. Поставил галку "продавать мощности" на одном ноуте, видно что какой то трафик есть. Было несколько проходов из облака. Сейчас агентов переустановил, статистика по ним сбросилась.


На ноутах стоит аваст, для проверки его отключал, результата нет. Еще мт5 писал, что ie надо обновить до 9 версии хотя бы, обновил до 9й, результата тоже нет.

Может подскажет кто, что можно сделать?

 
Renat Fatkhullin:
Чем меньше динамически пересоздаваемых обьектов, тем лучше.

Архитектурно старайтесь переиспользовать обьекты, а не пересоздавать.

Такой код

for ()
{
  int i = ....
}

для современного компилятора хуже такого?

int i = 0;

for ()
{
  i = ....
}
Или одинаково только для штатных типов? Но классы/структуры лучше так не делать, как в первом?
 
fxsaber:

Такой код

для современного компилятора хуже такого?

Или одинаково только для штатных типов? Но классы/структуры лучше так не делать, как в первом?
Для простых типов наоборот лучше за счет возможности оптимизировать локальный скоп.

Для обьектов лучше самостоятельно выносить за цикл.

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

В реальных программах с рабочим мясом и сторонними вызовами, когда не остается свободных регистров оптимизатору, все резко меняется.
 
Renat Fatkhullin:
Чем меньше динамически пересоздаваемых обьектов, тем лучше.

Архитектурно старайтесь переиспользовать обьекты, а не пересоздавать.

А, ну это понятно. Но тут опять нюанс - если использовать глобальный динамический объект, а в функциях делать Resize, всё равно не будет экономии.

 
mozarelo:

Добрый день!

Может не туда пишу, поправьте, если что.

Не получается подключить локальных агентов по сети. Есть два ноута с win7-64. Пробовал на обоих устанавливать и отдельно метатестер и запускать его из папки мт5, службы устанавливаются, а при поиске по сети мт5 видит только те, что на его машине установлены. Пробовал добавлять агентов вручную. В журнале появляется следующая запись:

2021.02.06 17:35:11.870 Agent_192.168.0.51:2000 connecting to 192.168.0.51:2000

2021.02.06 17:35:11.871 Agent_192.168.0.51:2001 connecting to 192.168.0.51:2001

2021.02.06 17:35:21.948 Agent_192.168.0.51:2000 authorization on still connected agent

2021.02.06 17:35:21.948 Agent_192.168.0.51:2000 connection closed

2021.02.06 17:35:21.948 Agent_192.168.0.51:2001 authorization on still connected agent

2021.02.06 17:35:21.948 Agent_192.168.0.51:2001 connection closed

При установке агентов в папке Tester появляются папки вида "Agent-0.0.0.0-2000". Хотя метатестер в окне пишет реальный ip ноута. Пробовал устанавливать агентов используя консольные команды, в папке Tester появляются папки вида "Agent-192.168.0.51-2000", но по сети все равно агенты не находятся. В окне метатестера написано что агенты запущены. Поставил галку "продавать мощности" на одном ноуте, видно что какой то трафик есть. Было несколько проходов из облака. Сейчас агентов переустановил, статистика по ним сбросилась.


На ноутах стоит аваст, для проверки его отключал, результата нет. Еще мт5 писал, что ie надо обновить до 9 версии хотя бы, обновил до 9й, результата тоже нет.

Может подскажет кто, что можно сделать?

Нужно в файрволе открыть доступ во входящих доступ к exe файлу тестерного агента или к используемым портам