Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: оптимизировать

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
markus4
Отправлено: 25 Марта, 2010 - 07:43:19
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Привет всем. Люди подскажите как можно оптимизировать такую вот конструкцию?

if (($a==1) || ($a==2) || ($a==3) || ($a==4)) echo "условие.";


-----
Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
 
 Top
lericen
Отправлено: 25 Марта, 2010 - 07:45:35
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Март 2010  


Помог: 0 раз(а)

[+]


Использую массив.
$mas=array("1","2");
К примеру if (in_array($a, $mas))
 
 Top
markus4
Отправлено: 25 Марта, 2010 - 07:47:30
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




lericen пишет:
Использую массив.
$mas=array("1","2");
К примеру if (in_array($a, $mas))


a его не нужно сначала инициализировать?
$mas =array();


-----
Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
 
 Top
lericen
Отправлено: 25 Марта, 2010 - 07:49:14
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Март 2010  


Помог: 0 раз(а)

[+]


Просто забей в массив варианты.
$mas=array("1","2",....);
 
 Top
markus4
Отправлено: 25 Марта, 2010 - 07:51:39
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




lericen пишет:
Просто забей в массив варианты.
$mas=array("1","2",....);


Спасибо большое!
Можно ещё попутный вопрос?
Часто вижу, что строковые переменные то в двойных кавычках. то в одиночных.
Вот какая в этом принципиальная разница? Или никакой?


-----
Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
 
 Top
lericen
Отправлено: 25 Марта, 2010 - 07:55:33
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Март 2010  


Помог: 0 раз(а)

[+]


Есть разница при совместном использовании. Если по отдельности ни какой.
 
 Top
Roler
Отправлено: 25 Марта, 2010 - 08:03:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




В двойных PHP будет обрабатывать переменные ("bla $var bla "), поэтому они работают чуть-чуть медленнее.
 
 Top
Champion Супермодератор
Отправлено: 25 Марта, 2010 - 08:57:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Это вы не оптимизировали, а раза в 3 затормозили. Вот код для эксперемента:
Спойлер (Отобразить)

Вот что он выводит 2 раза:
Цитата:
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.

Есть вопросы?
 
 Top
Stierus Супермодератор
Отправлено: 25 Марта, 2010 - 08:58:37
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




 
My status
 Top
JustUserR
Отправлено: 25 Марта, 2010 - 14:39:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




markus4 пишет:
Люди подскажите как можно оптимизировать такую вот конструкцию?
Переписать ее на компилируемом языке и вставить в виде динамической библиотеки Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB