Ошибки, баги, вопросы - страница 1657

 
Igor Karushev:
Вы уверены про 1 гигабайт ОЗУ? Разве не 2 Гб? И повторюсь: где-нибудь четкие цифры написаны в описании или документации?

Не перевирайте: оригинал текста моего: "если оперативной памяти меньше чем 1 Gb на агента"

Добавлено:

А ответы можно поискать в теме Мы запускаем облачный сервис MQL5 Cloud Network! 

 
Alexey Volchanskiy:
А там вообще можно что-то заработать, кроме как на пыво? )) Конечно, если вы не владелец фермы.
У меня не i7 - поэтому давно отключил облако. Использую агентов исключительно в своей домашней сети.
 
Slawa:

Системная функция Point() на самом деле инлайнится и преобразуется в простой доступ к переменной _Point

А функции-параметры ордеров (OrderType(), OrderTicket() и пр.) инлайнятся после выбора ордера? Если несколько раз обращаемся, например, к типу выбранного ордера, то имеет ли смысл сохранить результат OrderType() в переменной, и в дальнейшем коде использовать эту переменную? Или это ничего не даст по сравнению с многократным вызовом функции?

Т.е. есть разница в скорости выполнения, например, вот таких кодов?

if(OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP)
{
   
}

 и

int nType = OrderType();

if(nType == OP_BUYLIMIT || nType == OP_BUYSTOP || nType == OP_SELLLIMIT || nType == OP_SELLSTOP)
{
   
}
 
Проверил сам. Второй код выполняется в 4 раза быстрее. Всё ясно, вопрос снят.
[Удален]  
Sergei Vladimirov:
Проверил сам. Второй код выполняется в 4 раза быстрее. Всё ясно, вопрос снят.
В четыре раза "быстрее". Можете цифры предоставить ? Не 4 мкс, а 1 мкс ?)
 

Не микро. Нано. )

"a = OrderType()" - 3.45 нс.

"a = nType" - 2.19 нс.

 
Sergei Vladimirov:

А функции-параметры ордеров (OrderType(), OrderTicket() и пр.) инлайнятся после выбора ордера? Если несколько раз обращаемся, например, к типу выбранного ордера, то имеет ли смысл сохранить результат OrderType() в переменной, и в дальнейшем коде использовать эту переменную? Или это ничего не даст по сравнению с многократным вызовом функции?

Т.е. есть разница в скорости выполнения, например, вот таких кодов?

 и

Sergei Vladimirov:
Проверил сам. Второй код выполняется в 4 раза быстрее. Всё ясно, вопрос снят.

Безотносительно к вопросу вызов любой функции всегда медленнее, чем обращение к переменной, находящейся на стеке, в данном случае nType.

Лично я всегда такие вызовы функций MQL кеширую, как у вас во втором случае. 

 
Alexey Volchanskiy:

Безотносительно к вопросу вызов любой функции всегда медленнее, чем обращение к переменной, находящейся на стеке, в данном случае nType. 

Безотносительно к этой очевидности, вопрос был об инлайне функций. Т.е. не заменяется ли при компиляции OrderType() чем-то вроде order.type.

Лично я всегда такие вызовы функций MQL кеширую, как у вас во втором случае.

Как показали замеры, это лишнее. 

 
Sergei Vladimirov:

Безотносительно к этой очевидности, вопрос был об инлайне функций. Т.е. не заменяется ли при компиляции OrderType() чем-то вроде order.type.

Как показали замеры, это лишнее. 

Судя по внутренней реализации массивов, тот же ArraySize должен инлайниться. Но использую у себя всегда так (не замерял)

Вместо

for (int i = 0; i < ArraySize(Array); i++)

делаю

const int Amount = ArraySize(Array);

for (int i = 0; i < Amount; i++)
По производительности недавно удивил такой факт

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

Как последовательно перебрать перечисление?

fxsaber, 2016.08.22 09:13

Добавил к массиву static. Стало работать почти в три раза быстрее switch! На помойку такой switch. Спасибо за подсказку!
Так что лучше, похоже, не рассчитывать на оптимизацию компилятора, а всегда "помогать" ему через наименьший вызов функций и использование везде, где можно и логично const и static.
 
Sergei Vladimirov:

Безотносительно к этой очевидности, вопрос был об инлайне функций. Т.е. не заменяется ли при компиляции OrderType() чем-то вроде order.type.

Как показали замеры, это лишнее. 

Сами же написали: 

Sergei Vladimirov 2016.09.01 02:53      RU

Проверил сам. Второй код выполняется в 4 раза быстрее. Всё ясно, вопрос снят.