Я не делал, но поставить эксперимент и выяснить для себя дел минут на 10.
Первое выражение быстрее получается. Вот скрипт.
int start() { int a, b; int time = TimeLocal(); for (int i = 0; i <= 100000000; i++) { a = 7; b = 5; // Сюда вставляем первое выражение if(a > b) b = a; } int d_time_1 = TimeLocal() - time; time = TimeLocal(); for (i = 0; i <= 100000000; i++) { a = 7; b = 5; // Сюда вставляем второе выражение b = MathMax( a, b); } int d_time_2 = TimeLocal() - time; if (d_time_1 < d_time_2) Alert ("Первое выражение быстрее"); else { if (d_time_1 > d_time_2) Alert ("Второе выражение быстрее"); else Alert ("По барабану"); } return(0); }
У них небольшое различие. Разница видни начиная с цикла 10^7. А при цикле в 10^6 они равны.
Тут дело не в скорости, а в простоте, просто понятнее написать MathMax( a, b); чем if(a > b) b = a;
Но если прога большая, то может помочь.
Можно и в милисекундах померить:
#property show_inputs extern int Algorithm=1; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int a,b; int tick=GetTickCount(); MathSrand(1); for (int i=0;i<100000;i++) { a=MathRand(); b=MathRand(); switch(Algorithm) { case 1: if(a>b) b=a; break; case 2: b=MathMax(a,b); } } Alert("Calculating - ",GetTickCount()-tick," ms"); return(0); }
У них небольшое различие. Разница видни начиная с цикла 10^7. А при цикле в 10^6 они равны.
Тут дело не в скорости, а в простоте, просто понятнее написать MathMax( a, b); чем if(a > b) b = a;
Но если прога большая, то может помочь.
Да, еще раз - спасибо.
Такие вопросы возникают всегда, когда пишешь. Вот что быстрее - свой алгоритм, или стандартный поиск максимального значения в массиве. И так далее.
Было бы интересно, чтоб это все было очевидным. Опубликованным. Надеюсь, что в этой ветке будут опубликованы наблюдения форумчан.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Существуют разные способы решения одной и той же задачи. Есть ли у кого-нибудь конструкция, позволяющая понять быстродействие метода?
Ну, например:
или
Подобные альтернативные способы есть всегда. Что выбрать. Кто-нибудь делал рейтинг алгоритмов?