*WAP-OBZOR.RU -> Оптимиз комментарии 1 страница"/> *WAP-OBZOR.RU -> Оптимиз комментарии 1 страница"> *WAP-OBZOR.RU -> Оптимиз комментарии 1 страница"> {% else-1 %}

Нет фото
merin * [мошенник] 0.11
• 19 янв 2013, 21:59

•••
Всем привет!
За последний год довольно много хороших кодеров либо ушли в реал, либо нашли себе стабильную работу и просто забили на инет.
О ...
Всем привет!
За последний год довольно много хороших кодеров либо ушли в реал, либо нашли себе стабильную работу и просто забили на инет.
Одновременно "появилось" много скажем новичков.
В этой статье я поделюсь с вами советами по поводу оптимизации PHP кода.
Зачем я решил это сделать?
- Я сам искал материалы, но ничего прямого к теме не находил.
- Новички в первую очередь стараються "наклепать" или "напонтовать" мод, такой чтоб он казался сложным и прочее, но этим они лишь убивают скорость работы скрипта.
Думаю можно начать урок. *
1. Используйте одинарные кавычки вместо двойных
Двойные ковычки "сканируются" на наличие переменных и подстановок.
print("Это тот же текст");
echo "И это тоже!"); ?>
Намного быстрей будет работать

Потому что, тут сервер не ищет переменных или подстановок, одним словом код становиться более читабельным.
Тоже самое я скажу и про текст из переменных...
$text='ok'; быстрей чем $text="ok";
2. Не заключайте переменные в кавычки
echo 'Тут мой текст: '.$text.' *'; ?>
Быстрее чем
echo "Тут мой текст: $text *";
В первом примере у нас склейка строк, тоесть текст делиться на три части:
1. Тут мой текст:
2. $text
3. *
3. Не используйте много переменных
echo 'Текст';
Быстрей в два раза чем
$text='Текст';
echo $text;
4. Используйте короткие имена переменных (не больше 7 символов)
$abc='текст';
Быстрее чем
$abcabs_ololo_aaaa='текст';
5. Используйте вложенные функции

Быстрей чем
$text=str_replace("\r",' ',$text);
$text=trim($text);
$text=stripslashes($text);
$text=substr($text,0,1024);
echo text; ?>
6. Используйте существующие функции
echo htmlspecialchars($text);
Быстрее чем
$text=str_replace('"','',$text);
$text=str_replace('<','<',$text);
$text=str_replace('>'','>',$text); ?>
echo $text;
Дело в том что стандартная функция htmlspecialchars() делает тоже самое что и тот велосипед, только в несколько раз быстрей.
7. Создавайте и используйте собственные функции
$my = mysql_real_escape_string(htmlspecialchars(trim($my)));
}
$text = filtre($text);
$text2 = filtre($text2); ?>
Быстрее чем
$text2 = mysql_real_escape_string(htmlspecialchars(trim($text))); ?>
8. Не создавайте лишних функций

Быстрее чем
function text($text){
$text=str_replace('&','&',$text);
$text=str_replace('"','',$text);
$text=str_replace('<;','<',$text);
$text=str_replace('>'','>',$text);
}
echo text($text);
?>
9. Не используйте лишние конструкции
echo 'Тут мой текст';
Быстрее чем
echo 'тут мой';
echo ' текст';
10. Не используйте устарелые функции
echo str_replace('добро','зло',$text); (функция находит в переменной $text слова добро и заменяет на зло.)
Быстрее чем
echo ereg_replace('добро','зло',$text); (+ функция ereg_replace включает алгоритм обработки регулярных выражений, хотя этого тут не нужно.)
preg_match("/(ма[a-zа-я]{1,20})/im",$text);
Быстрее чем
eregi("(ма[a-zа-я]{1,20})",$text);
11. Не играйте с обработчиком
'.$text.' ';
include 'text.php'; echo 'Ссылка'; ?>
Быстрее чем

echo $text;
?>

include 'text.php';
?>
Ссылка
12. Используйте echo вместо print при выкл. ob_start()

Быстрей чем

Однако, если включён ob_start() всё наоборот, print будет работать быстрей.
13. Используйте меньше комментариев в коде
Лучше всего использовать минимум комментариев, если же вы используйте кеширование opcodes, комментарии игронируются, и убирать их не нужно.
14. Не используйте лишние символы, лишнюю конкатенацию строк

в версии 4.2 работает быстрее чем

однако с 4.3 скорость идентична.
15. Не используйте килограммы кода в подключаемом файле
Примерно на обработку каждых 2 Кб кода инклудного файла тратиться 0.001 секунды.
16. Храните и выводите данные в файла/из файла, используйте бд лишь в случаях поиска данных, хранения данных для поиска
17. Работа без ООП(object) быстрее в 3 раза
18. Используйте одинарные ковычки в массивах, контролируйте мерность массивов
$text['test'] = 'ok';
быстрее чем
$text[test] = 'ok';
и быстрее чем
$text['test']['test'] = 'ok';
19. Контактация строк с помощи запятой в конструкции echo быстрее чем контактация c помощью точки
Пример:
$text2 = 'text2';
echo $text , $text2; ?>
быстрее чем

20. Лучше контактировать переменные и выводить с помощью echo чем повторять конструкцию echo несколько раз
$text = 'test';
$text.= 'test2';
echo $text;
?>
Быстрее чем
echo 'test';
echo 'test2';
?>
Однако
echo 'test'; echo 'test2';
ob_end_flush(); ?>
Быстрее чем
$text = 'test';
$text.= 'test2';
echo $text;
?>
21. Require быстрее, чем include
22. If, else, elseif быстрее чем switch
23. Elseif быстрее чем множество конструкций if, else
24. Функции работы со строками быстрее, чем регулярные выражения
25. Не используйте подавление ошибок Удалён />26. Проверка символов в строке с помощью isset быстрее чем с помощью функции strlen()
if (isset($test{10})){
код
} ?>
быстрее чем
if (strlen($text)>9){
код
} ?>
27. Для определения времени используйте $_SERVER['REQUEST_TIME'] вместо функции time()
Но, $_SERVER['REQUEST_TIME'] может вывести неверный формат времени (время сервера).
28. Используйте NULL вместо 0, is_null, empty
1. if ($count===null){
код
}
?>
2.
быстрее чем:
1.
2.
3.
4.
29. ++i и --i быстрее чем i++ и i--
30. Не плодите переменные
$a = 1+1;
?>
Быстрее чем
$a = 1;
$b = 1;
$c = $a+$b;
?>
31. Не храните часто выводимые переменные в функциях
$a = 'text';
echo $a;
?>
Быстрее чем
function text(){
$a = 'text';
echo $a;
}
echo text();
?>
32. SizeOf() работает быстрее чем count()
33. Str_replace() работает быстрее чем preg_replace()
34. Mysql_result() быстрее чем mysql_num_rows()
Пример:
$a = mysql_result(mysql_query("SELECT count(id) FROM `users`"),0);
echo $a;
?>
Быстрее чем
$a = mysql_query("SELECT (id) FROM `users`");
$b = mysql_num_rows($a);
echo $b;
?>
35. Закрывайте соединение с бд после запросов, там где он не нужен
36. При запросах в бд SELECT, UPDATE, DELETE указывайте LIMIT (лимит запросов)
37. При селекте данных из бд указывайте интересующие колонки вместо * (всех колонок)
$us = mysql_fetch_assoc(mysql_query("SELECT id,name,nick,pass from `users` where `id` = '".$id."' limit 1"));
Быстрее чем
$us = mysql_fetch_assoc(mysql_query("SELECT * from `users` where `id` = '".$id."' limit 1"));
Так же
$us = mysql_result(mysql_query("SELECT count(id) from `users`"));
быстрее чем
$us = mysql_result(mysql_query("SELECT count(*) from `users`"),0);
38. Не используйте ненужные в строке функции
$num = abs(intval($_GET['num']));
Быстрее чем
$num = intval(htmlspecialchars(mysql_real_escape_string(trim($_GET['num']))));
Зачем тут столько фильтров, если мы профильтровали числовые данные с помощью intval()?
39. Используйте данные типа boolean
Например для определения если юзер онлайн лучше использовать код
if($a == true){ ... }
Вместо
if($a == 'true'){ ... }
И так далее.
Этой информации я думаю хватит для новичка, надеюсь моя статья будет для вас полезной.
Спасибо за внимание!
Комментариев нет!