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

 
Edgar Akhmadeev:

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

Будет экономия.

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

Обратил внимание:

top показывает для terminal64.exe 26-28% CPU и 20-21% CPU для wineserver

Стоит открыть какое-либо окно типа "Список индикаторов", "Список экспертов", "Список объектов", "О программе" или даже просто какой-то из пунктов меню (но не стакан), и top начинает показывать для terminal64.exe 8-10% CPU и 7-8% CPU для wineserver

Запущено много индикаторов и советников во множестве окон, но торги закрыты (ФОРТС), тики не приходят, события "Trade", "TradeTransaction", "BookEvent" тоже. Событие "Timer" используется только двумя советниками, их останов на загрузку CPU практически не влияет.

build 2755

 
Не является ли это предупреждение компилятора лишним?
string f()
{
  return((string)MathRand());
}

void OnStart()
{
  if ((int)f()) // expression not boolean
    return;
}
 
fxsaber:
Не является ли это предупреждение компилятора лишним?

По-моему, нет. Тут же явное преобразование к Integer'y. Вполне правильно предупредить, что это не Boolean, как требуется в условии.

 
Georgiy Merts:

По-моему, нет. Тут же явное преобразование к Integer'y. Вполне правильно предупредить, что это не Boolean, как требуется в условии.

void OnStart()
{
  if (MathRand()) // OK
    return;

  if ((int)MathRand()) // expression not boolean
    return;
}


Связка несимпатичная получается.

string f()
{
  return((string)MathRand());
}

void OnStart()
{
  if ((bool)(int)f())
    return;
}
 
Как вариант, проверить if ((int)f()!=0)
 
traveller00:
Как вариант, проверить if ((int)f()!=0)

Лучше проще (зависит от смысла проверки, которой мы не знаем):

if(f() != NULL)

или сделать обертку IsEmpty функцией или дефайном.

 
fxsaber:


Связка несимпатичная получается.

Так не даёт предупреждений

string f()
{
   return((string)MathRand());
}

void OnStart()
{
   if(StringToInteger(f()))
      return;
}
 
Roman:

Так не даёт предупреждений

Поэтому и вопрос.

 
traveller00:
Как вариант, проверить if ((int)f()!=0)

Привык с нулем не делать сравнений.