|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
Что быстрее работает Switch или If операторы
Что быстрее работает Switch или If операторы?Тестировал кто нибудь? поделитесь опытом
|
|
|||||
Собственно, тесты:
1. Тест на сравнение '==', результат: Test started, 100000000 iterattions! if: 1453 milisecconds switch: 1831 milisecconds version: WIN 10,1,52,14 Test started, 100000000 iterattions! if: 1272 milliseconds switch: 6568 milliseconds version: WIN 10,1,52,14 import flash.events.TimerEvent; import flash.utils.Timer; import flash.system.Capabilities; var test:int = 100000000; var timer:Timer = new Timer(1000, 1); timer.addEventListener(TimerEvent.TIMER_COMPLETE, startTest); timer.start(); trace('Test started, '+test+' iterattions!'); function startTest(e:TimerEvent):void{ var b:int = 0; var timeStart:Number = getTimer(); for(var i:int = 0; i<test; i++){ if(i<0){ b++; }else if(i<0){ b++; }else if(i<0){ b++; } } trace('if: '+(getTimer()-timeStart)+' milliseconds'); b = 0; timeStart = getTimer(); for(var j:int = 0; j<test; j++){ switch(j){ case j<0: b++; break; case j<0: b++; break; case j<0: b++; break; } } trace('switch:'+(getTimer()-timeStart)+' milliseconds'); trace('version: '+Capabilities.version); } Switch подходит для сравнения конкретных результатов, вкладывая в него '<' мы фактически создаем ещё одно под условие, отсюда такой плохой результат. Писать его не сложно и он очень удобен для перебора заранее известных результатов. Получаются ясные и красивые конструкций. Добавлено через 25 минут Особенно стоит отметить возможность указания последовательных меток в switch:
__________________
Дети не должны знать о своих родителях |
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Ну почему, вдруг у автора несколько миллиардов свитчей/условных операторов. Может и поможет.
|
|
|||||
Регистрация: Feb 2009
Сообщений: 141
|
У меня switch тоже показывает худшие результаты по сравнению с if. Однако, разница не может быть почти в 6 раз, как у вас. У меня в этом же коде switch отстает от if на 25%, но не 600%, этого просто не может быть.
И тем не менее я уверен, что выбор в пользу switch или if не должен диктоваться производительностью. |
|
|||||
|
|
|||||
странно, всегда думал, что в ас3 это должно быть как в других языках
http://stackoverflow.com/questions/7...an-switch-case хотя возможно так и есть, просто все вышеприведенные тесты не достоверны. Надо протестировать на большом количестве условий |
Часовой пояс GMT +4, время: 20:39. |
|
« Предыдущая тема | Следующая тема » |
|
|