Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010
Помог: 0 раз(а)
Привет всем. Люди подскажите как можно оптимизировать такую вот конструкцию?
if (($a==1) || ($a==2) || ($a==3) || ($a==4)) echo "условие.";
----- Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
lericen
Отправлено: 25 Марта, 2010 - 07:45:35
Новичок
Покинул форум
Сообщений всего: 21
Дата рег-ции: Март 2010
Помог: 0 раз(а)
[+]
Использую массив.
$mas=array("1","2");
К примеру if (in_array($a, $mas))
markus4
Отправлено: 25 Марта, 2010 - 07:47:30
Гость
Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010
Помог: 0 раз(а)
lericen пишет:
Использую массив.
$mas=array("1","2");
К примеру if (in_array($a, $mas))
a его не нужно сначала инициализировать?
$mas =array();
----- Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
lericen
Отправлено: 25 Марта, 2010 - 07:49:14
Новичок
Покинул форум
Сообщений всего: 21
Дата рег-ции: Март 2010
Помог: 0 раз(а)
[+]
Просто забей в массив варианты.
$mas=array("1","2",....);
markus4
Отправлено: 25 Марта, 2010 - 07:51:39
Гость
Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010
Помог: 0 раз(а)
lericen пишет:
Просто забей в массив варианты.
$mas=array("1","2",....);
Спасибо большое!
Можно ещё попутный вопрос?
Часто вижу, что строковые переменные то в двойных кавычках. то в одиночных.
Вот какая в этом принципиальная разница? Или никакой?
----- Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
lericen
Отправлено: 25 Марта, 2010 - 07:55:33
Новичок
Покинул форум
Сообщений всего: 21
Дата рег-ции: Март 2010
Помог: 0 раз(а)
[+]
Есть разница при совместном использовании. Если по отдельности ни какой.
Roler
Отправлено: 25 Марта, 2010 - 08:03:47
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
В двойных PHP будет обрабатывать переменные ("bla $var bla "), поэтому они работают чуть-чуть медленнее.
Champion
Отправлено: 25 Марта, 2010 - 08:57:41
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Это вы не оптимизировали, а раза в 3 затормозили. Вот код для эксперемента:
0.62 IF 4
0.32 IF 1
2.06 ARRAY 4
1.77 ARRAY 1
2.86 RANGE 4
2.59 RANGE 1
0.34 CMP 4
0.36 CMP 1
0.63 IF 4
0.33 IF 1
2.06 ARRAY 4
1.77 ARRAY 1
2.86 RANGE 4
2.59 RANGE 1
0.34 CMP 4
0.35 CMP 1
Логические условия выполняются слева направо: ИЛИ до первой правды, И до первой лжи. Поэтому сравнения с единицей происходят быстрее, чем с 4. За худшее время надо принимать результат сравнения с 4. Варианты с созданием массива проигрывают обычным сравнениям аж 6-9 раз. Удивительного тут мало: создавание массива, и как уж там сравнение осуществляется, я не знаю, но создание массива - дорогая операция.
Ну и сравнения с помощью больше/меньше дало примерно равный результат, потому что там всего две операции сравнения, а в первом случае 4.
Есть вопросы?
Stierus
Отправлено: 25 Марта, 2010 - 08:58:37
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
markus4 пишет:
Люди подскажите как можно оптимизировать такую вот конструкцию?
Переписать ее на компилируемом языке и вставить в виде динамической библиотеки
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.