Особенности языка mql5, тонкости и приёмы работы - страница 281

 
amrali #:

Прирост производительности будет заметен при работе с большими/огромными массивами. Для небольших массивов ключевое слово 'static' не дает никаких преимуществ.

в тестах может дать, надо проверять

и смотреть нужно в мультисимволах, это главный затуп, умножать все на количество символов

 
HistorySelectByPosition может создавать таблицы на тысячи элементов.
void OnStart()
{  
  if (HistorySelectByPosition(35466210))
    Print(HistoryOrdersTotal()); // 27507
}
 
fxsaber #:
HistorySelectByPosition может создавать таблицы на тысячи элементов.

Откуда такой ID позиции? От фонаря или реальный?

 
Alexey Viktorov #:

Откуда такой ID позиции? От фонаря или реальный?

Да, это реальные данные. Тысячи ордеров - реджекты TP только одной позиции с таким ID.

 
Обратил внимание, что на подобную конструкцию компилятор не ругается.
class A {};

void OnStart()
{
  A a;
  
  a = &a; // Полное копирование объекта по указателю в объект.
}

Это, конечно, не преобразование указателя в объект, но в некоторых ситуациях и такая конструкция целесообразна для ускорения.

 
fxsaber #:

Да, это реальные данные. Тысячи ордеров - реджекты TP только одной позиции с таким ID.

Тогда что здесь необычного, особенного?

 
Alexey Viktorov #:

Тогда что здесь необычного, особенного?

Все очень просто. Считаю, что подобное явление желательно учитывать при написании оптимального кода. Кто-то так не считает.

Считаю для себя правильным написать об этом именно в данной ветке. Кто-то так не считает.

 
fxsaber #:

Все очень просто. Считаю, что подобное явление желательно учитывать при написании оптимального кода. Кто-то так не считает.

Считаю для себя правильным написать об этом именно в данной ветке. Кто-то так не считает.

Да я то не возражаю, просто желательно видеть такие пояснения сразу чтобы не возникало таких вопросов. А так, прочёл и думаешь: «к чему бы это?». А что касается оптимального кода, я вообще считаю самым поганым делом ковыряться в истории. Хотя это на любителя…

 
Alexey Viktorov #:

Да я то не возражаю, просто желательно видеть такие пояснения сразу чтобы не возникало таких вопросов. А так, прочёл и думаешь: «к чему бы это?». А что касается оптимального кода, я вообще считаю самым поганым делом ковыряться в истории. Хотя это на любителя…

А есть способ узнать историю без ковыряния в истории? Подскажи.

 
fxsaber #:
Обратил внимание, что на подобную конструкцию компилятор не ругается.

Это, конечно, не преобразование указателя в объект, но в некоторых ситуациях и такая конструкция целесообразна для ускорения.

Чем отличается

a = &a;

от

a = a;

для того конкретного кода?

[edit]

Разве '&a' не означает 'GetPointer(a)' ? А дальше неявный operator= принимает ссылку.

  1. reference (автоматический объект изначально) -->
  2. pointer (как результат &) -->
  3. reference (указатель преобразован компилятором в ссылку для передачи в operator=(const A&))
Могу ошибаться, я не проверял, но на первый взгляд ваш код должен работать именно так, как я описал