Можете сравнить также с оператором switch, который является аналогом оператора if.
switch(выражение) { case константа: операторы case константа: операторы ... default: операторы }
Вообще-то в таких измерениях лучше использовать GetTickCount(), а не TimeLocal()
Странно было бы ожидать, что скорость будет разной, ибо конструкции идентичны.
Вот если бы некоторые из условий временами не выполнялись (FALSE), то первая конструкция была бы однозначно быстрее.
В "слонах" лучше, чем в "попугаях".
1. Кол-во операций (циклов) (там где for) = 100000000.
2. В секундах (у меня) 54.
54/100000000=0,00000054 с/цикл
В "слонах" лучше, чем в "попугаях".
1. Кол-во операций (циклов) (там где for) = 100000000.
2. В секундах (у меня) 54.
54/100000000=0,00000054 с/цикл
Есть предположение, что львиная доля этих 54 сек на совести $reg=iClose(Symbol(),PERIOD_M15,1); Если интересуют if'ы, это вклад нужно замерить и вычесть. Вместе с вкладом "невидимых" обслуживающих for операций.
P.S. Если Вы когда-нибудь покупали что-нибудь жидкое в свою тару, то могли наблюдать как сначала взвешивается пустая тара, а затем наполненная. Цикл for в данном случае - тара, а $reg=iClose(Symbol(),PERIOD_M15,1); - предварительно положенный в неё булыжник.
Есть предположение, что львиная доля этих 54 сек на совести $reg=iClose(Symbol(),PERIOD_M15,1); Если интересуют if'ы, это вклад нужно замерить и вычесть. Вместе с вкладом "невидимых" обслуживающих for операций.
P.S. Если Вы когда-нибудь покупали что-нибудь жидкое в свою тару, то могли наблюдать как сначала взвешивается пустая тара, а затем наполненная. Цикл for в данном случае - тара, а $reg=iClose(Symbol(),PERIOD_M15,1); - предварительно положенный в неё булыжник.
Абсолютно верно. Без "булыжника" всё примерно 1 с.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Решил проверить скорость выполнения некоторых операций.
Побочный вывод:
Скорость выполнения оператора IF не зависит ни от чего!!
int $time_0=TimeLocal();
double $reg;
for(int $i=100000000;$i>0;$i--){
if(1==1){
if(2==2){
if(3==3){
if(4==4){
if(5==5){
if(6==6){
if(7==7){
if(8==8){
if(9==9){
if(0==0){
$reg=iClose(Symbol(),PERIOD_M15,1);
}}}}}}}}}}
}
Alert(TimeLocal()-$time_0);
int $time_0=TimeLocal();
double $reg;
for(int $i=100000000;$i>0;$i--){
if(1==1 && 2==2 && 3==3 && 4==4 && 5==5 && 6==6 && 7==7 && 8==8 && 9==9 && 0==0){
$reg=iClose(Symbol(),PERIOD_M15,1);
}
}
Alert(TimeLocal()-$time_0);