Новая версия платформы MetaTrader 5 build 4410: улучшения в работе - страница 11

 
Vladislav Boyko #:

Просто в голову пришло:

Добавить возможность объясвить локальную не статическую переменную-ссылку на объект класса. Тогда это работало бы так-же, как метод withRef, но без необходимости делать аргумент-прокладку.

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

Любой механизм отказа от подобных проверок приветствовал бы.

 
fxsaber # :

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

Любой механизм отказа от подобных проверок приветствовал бы.

Непонятно, зачем столько проверять указатели?

Я использую много указателей, и мне почти никогда не приходится их проверять. У вас есть пример кода из «реального мира»?

 
Alain Verleyen #:

Непонятно, зачем столько проверять указатели?

Я использую много указателей, и мне почти никогда не приходится их проверять. У вас есть пример кода из «реального мира»?

We are not talking about checking pointers in the MQL program code, but about checking pointers by the terminal at runtime to ensure safe execution. That is, these are not the checks that you programmed, but overhead.


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

 
Vladislav Boyko # :

We are not talking about checking pointers in the MQL program code, but about checking pointers by the terminal at runtime to ensure safe execution. That is, these are not the checks that you programmed, but overhead.


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

Спасибо, но боюсь, я не понимаю.

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

Мне интересно, что это такое, MQL5 даже с указателями работает очень быстро.


Я буду продолжать использовать автоматический перевод. Если это недостаточно хорошо, пожалуйста, дайте мне знать.

 
Alain Verleyen #:
MQL5 даже с указателями работает очень быстро

You are right, that overhead is not worth bothering with.

Based on the results of that script, it can be assumed that using a pointer adds approximately 2 nanoseconds of overhead for each access to the object through the pointer (+20000 microseconds for 10 million accesses to the object). And this is using the old i7-7700. 500 million times avoiding a pointer to save a second on an old processor.

Alain Verleyen #:
Я буду продолжать использовать автоматический перевод. Если это недостаточно хорошо, пожалуйста, дайте мне знать.

I added the English translation only because I know that automatic translators are much worse at translating from Russian to English than vice versa.


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

По результатам того скрипта можно предположить, что использование указателя добавляет примерно 2 наносекунды оверхеда для каждого обращения к объекту через указатель (+20000 микросекунд для 10 миллионов обращений к объекту). И это на старом i7-7700. 500 миллионов раз избежать указателя, что бы сэкономить секунду на старом процессоре.

Alain Verleyen #:
Я буду продолжать использовать автоматический перевод. Если это недостаточно хорошо, пожалуйста, дайте мне знать.

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

 
Vladislav Boyko #:

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

50 миллионов тиков, на каждом по 10 обращений через указатели (очень скромно) - один проход экономит секунду.

ГА на 10 000 проходов - почти три часа экономии на одном Агенте. Пусть 10 агентов - 15 минут экономии на многоядерке, если компилятор делает правильный код.

 
MetaQuotes:
Terminal: Исправлено падение терминала, происходившее в некоторых случаях при запуске тестирования.

Что-то у меня после обновления на 4468 стал терминал крашиться при попытке открыть тестер...

Краш лог есть.

И ни к каким счетам кроме MQ -Demo не коннектится...

no connection

 
Andrey Barinov #:

Что-то у меня после обновления на 4468 стал терминал крашиться при попытке открыть тестер...

Краш лог есть.

И ни к каким счетам кроме MQ -Demo не коннектится...

Где?

 
Artyom Trishkin #:

Где?

Вам отправить?

 
Andrey Barinov #:

Вам отправить?

Мне не нужно. Просто в zip-архиве приложить к своему посту надо было. Можете отредактировать свой пост и приложить.