Нужна ли независимая проверка продуктов Фриланса? - страница 29

 
Комментарии, не относящиеся к этой теме, были перенесены в "Свечной анализ. Кодирование паттернов".
 
Vinin:
Сравнивать действительные числа?????
Это код из рабочего скрипта, по подсчету объемов каждого бара.
 

https://www.mql5.com/en/forum/41215

Quality and efficiency of mql coding.
Quality and efficiency of mql coding.
  • www.mql5.com
514 METHOD 1 : using Static Arrays. - - Category: expert advisors and automated trading
 

Ну раз уж ветку подняли...

Обещанный конкурс

 
angevoyageur:

https://www.mql5.com/en/forum/41215

вот такой ещё метод можно добавить:

void OnStart()
  {
//---
   string s="1     M1 5     M5 15    M15 30    M30 60    H1 240   H4 1440  D1 10080 W1 43200 MN1 ";
   int pos=StringFind(s,string(_Period));
   if(pos>=0)Print(StringSubstr(s,pos+6,3));

  }
//+----------
проходов 11000000 на каждой распечатке, в среднем почти рекорд среди всех методов что есть у Вас )
правда сравнивать нужно на одной машине
2015.03.01 17:48:55.229	Tf EURUSD,Daily: 1359
2015.03.01 17:48:53.870	Tf EURUSD,Daily: 1344
2015.03.01 17:48:52.526	Tf EURUSD,Daily: 1344
2015.03.01 17:48:51.182	Tf EURUSD,Daily: 1359
2015.03.01 17:48:49.823	Tf EURUSD,Daily: 1344
2015.03.01 17:48:48.479	Tf EURUSD,Daily: 1328
2015.03.01 17:48:47.151	Tf EURUSD,Daily: 1360
2015.03.01 17:48:45.791	Tf EURUSD,Daily: 1359
2015.03.01 17:48:44.432	Tf EURUSD,Daily: 1375
2015.03.01 17:48:43.057	Tf EURUSD,Daily: 1391
2015.03.01 17:48:41.682	Tf EURUSD,Daily: 1406

 

определённо не самый скорострельный метод )

2015.03.01 18:20:55.765 PeriodToString2 EURUSD,Daily: METHOD 7 : using arrays. Executed 11000000 times in 875 ms.
2015.03.01 18:20:54.890 PeriodToString2 EURUSD,Daily: METHOD 6 : using switch. Executed 11000000 times in 344 ms.
2015.03.01 18:20:54.546 PeriodToString2 EURUSD,Daily: METHOD 5 : using if(s) improved. Executed 11000000 times in 406 ms.
2015.03.01 18:20:54.140 PeriodToString2 EURUSD,Daily: METHOD 4 : using EnumToString(macro). Executed 11000000 times in 1672 ms.
2015.03.01 18:20:52.468 PeriodToString2 EURUSD,Daily: METHOD 3 : using if(s) original. Executed 11000000 times in 406 ms.
2015.03.01 18:20:52.062 PeriodToString2 EURUSD,Daily: METHOD 2 : using EnumToString. Executed 11000000 times in 4687 ms.
2015.03.01 18:20:47.374 PeriodToString2 EURUSD,Daily: METHOD 1 : using Static Arrays. Executed 11000000 times in 1172 ms.
 
sanyooooook :

определённо не самый скорострельный метод )

Сценарий обновляется.

2015.03.01 20:06:56.608    METHOD 1 : using Static Arrays. Executed 11000000 times in 1828 ms.
2015.03.01 20:07:03.391    METHOD 2 : using EnumToString. Executed 11000000 times in 6531 ms.
2015.03.01 20:07:04.782    METHOD 3 : using if(s) original. Executed 11000000 times in 1422 ms.
2015.03.01 20:07:06.969    METHOD 4 : using EnumToString(macro). Executed 11000000 times in 2157 ms.
2015.03.01 20:07:08.251    METHOD 5 : using if(s) improved. Executed 11000000 times in 1343 ms.
2015.03.01 20:07:09.548    METHOD 6 : using switch. Executed 11000000 times in 1250 ms.
2015.03.01 20:07:14.768    METHOD 7 : using arrays. Executed 11000000 times in 1657 ms.
2015.03.01 20:07:18.456    METHOD 8 : using StringFind. Executed 11000000 times in 3468 ms.

Файлы:
 
angevoyageur:

Сценарий обновляется.

2015.03.01 20:06:56.608    METHOD 1 : using Static Arrays. Executed 11000000 times in 1828 ms.
2015.03.01 20:07:03.391    METHOD 2 : using EnumToString. Executed 11000000 times in 6531 ms.
2015.03.01 20:07:04.782    METHOD 3 : using if(s) original. Executed 11000000 times in 1422 ms.
2015.03.01 20:07:06.969    METHOD 4 : using EnumToString(macro). Executed 11000000 times in 2157 ms.
2015.03.01 20:07:08.251    METHOD 5 : using if(s) improved. Executed 11000000 times in 1343 ms.
2015.03.01 20:07:09.548    METHOD 6 : using switch. Executed 11000000 times in 1250 ms.
2015.03.01 20:07:14.768    METHOD 7 : using arrays. Executed 11000000 times in 1657 ms.
2015.03.01 20:07:18.456    METHOD 8 : using StringFind. Executed 11000000 times in 3468 ms.

ух, тут совсем медленно )
 
sanyooooook :
ух, тут совсем медленно )

Извините

Я не думаю, что вы можете найти способ быстрее, чем с switch.

 
angevoyageur:

Извините

Я не думаю, что вы можете найти способ быстрее, чем с switch.

мне не столько интересна скорость сколь разные методы, большой скорости не ожидал, ведь там строки.

ЗЫ: поверьте есть метода куда быстрее SWITCH, но как водится работает правило, чем выше скорость, тем больше памяти задействуется. )

string Period_[43200];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Period_[0]="M1";
   Period_[4]="M5";
   Period_[14]="M15";
   Period_[29]="M30";
   Period_[59]="H1";
   Period_[239]="H4";
   Period_[1439]="D1";
   Period_[10079]="W1";
   Period_[43199]="MN";
   Print( Period_[_Period-1]);      

  }
//+------------------------------------------------------------------+
Причина обращения: