| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Какой код быстрее обрабатывается? |
| Автор: Maximov 9.4.2003, 10:16 |
| какой код обработается быстрее одной строкой if ((условие1)and(условие2)and(условие3)and(условие4)and(условие5)) { } или вкладывать if (условие1) {if (условие2) {if (условие3) {if (условие4) {if (условие5) {} } } } } |
| Автор: Foxx 9.4.2003, 11:18 |
| А протестировать ? На глаз мне кажется что первый вариант... но нужно тестирование. Подробности можешь найти на http://php.spb.ru |
| Автор: arial 9.4.2003, 11:37 |
| Пишем код: 1-й случай: --------------------------- $a1=1; $a2=2; $a3=3; $a4=4; $a5=5; $time1=microtime(); if (!empty($a1)&&!empty($a2)&&!empty($a3)&&!empty($a4)&&!empty($a5)) { $time2=microtime(); } $time3=($time2-$time1)*1000000; echo $time3; ----------------------------- 2- случай: ------------------------------ $a1=1; $a2=2; $a3=3; $a4=4; $a5=5; $time1=microtime(); if (!empty($a1)&&!empty($a2)&&!empty($a3)&&!empty($a4)&&!empty($a5)) { $time2=microtime(); } if (!empty($a1)) { if (!empty($a2)) { if (!empty($a3)) { if (!empty($a4)) { if (!empty($a5)) { $time2=microtime(); } } } } } $time3=($time2-$time1)*1000000; echo $time3; ------------------------------------ Получили результат: 1-й случай: 86.00 2-й случай: 103.99 Комментарии излишни! |
| Автор: Mark.dll 9.4.2003, 12:35 |
| Браво! |
| Автор: IZ@TOP 9.4.2003, 12:47 | ||
А попробуйте так :
|
| Автор: Foxx 9.4.2003, 15:35 |
| не глаз а алмаз |
| Автор: IZ@TOP 9.4.2003, 17:10 | ||
Ты это о чем ? |
| Автор: arial 9.4.2003, 19:27 | ||||
switch здесь не пойдет, потому как он проверяет только одну переменную, например: switch ($a1) { case 1: first_function (); break; case 2: second_function (); break; case 3: third_function (); break; case 4: fourth_function (); break; case 5: fifth_function (); break; } т.е. если переменная $a1,принимает значение 1, то выполняется first_function и т.д. У нас же задача в другом - нам надо проверить сразу 5 переменных, и только при true выполнить некую функцию, поэтому switch здесь в пролете. |
| Автор: Foxx 10.4.2003, 04:06 | ||||
о том что на глаз определил фавора |
| Автор: IZ@TOP 10.4.2003, 08:44 | ||
Млин ... а кто разве говорил что мы проверяем не одну переменную ? Тама в начале про это не чего не писали ! |
| Автор: arial 10.4.2003, 12:18 | ||
Он говорил... |
| Автор: IZ@TOP 10.4.2003, 12:28 | ||
Прошу прощенья ... облажался ... А если проверять одну переменную ? то что будет быстрее (хотя ответ на жтот вопрос я знаю), мне просто интересно какой отрыв во времени ... |
| Автор: arial 10.4.2003, 15:24 | ||
Как и в том случае пользуйся разницей microtime() до и после выполнения проверяемой функции. Так можно что угодно тестить, или время обработки документа у себя на сайте отображать. |
| Автор: TiHo 10.4.2003, 15:44 | ||
Однозначно быстрее, потому как AND исключающее условие, если (условие1) == FALSE то остальные даже проверять не станет. |
| Автор: Foxx 10.4.2003, 16:18 | ||||
то же самое можно сказать и про второй вариант.
Если не выполниться первое условие то не будут выполняться и остальные. Так что тут ты не прав. |
| Автор: arial 10.4.2003, 17:39 | ||
Проверяем на практике:
Результат: Если empty($a1) Линейный быстрее; Если empty($a2) Линейный быстрее; Если empty($a3) Линейный быстрее; Если empty($a4) Линейный быстрее; Если empty($a5) Линейный быстрее; Если !empty($a1-$a5) Линейный быстрее; |