Увеличиваем скорость работы скрипта

mit

Новичок
Увеличиваем скорость работы скрипта

Народ. Давайте скинимся парочкой советов как сделать так чтобы скрипт работал быстрее. Какие функции оптимальнее использовать и т.п.
 

Gas

может по одной?
mit
твой вопрос почти не имеет смысла. Это всё равно что - подскажите как мне улучшить ходовые характеристики "машины" (то-ли запорожца, то-ли макларена). Имхо безпредментный разговор совершенно.
 

texrdcom

Новичок
Поищи в инете или в фаге.
Есть не сколько простых правил:
1) Используем кавычки для вывода текста ' ' а не "текст "
2) Любые функцию должны возвращать что то тоесть в теле должна быть строчка return
3) Да не которые функции тоже работают быстрея чем их аналоги.
4) Циклы по возможности где допустимо for а не foreach
и так далее....
Но это все экономит мили секунды тоесть если не продуманный сам алгоритм скрипта или идет излишек кода: в разных функция присущие одни и те же вычесления, и так дальше то все это относительно без полезно.
p/s
Есть правда и другой метод ускорения кода это перевод php скрипта в си программу и её компилирования в exe но и это не дает чудес быстроты - ищи по форуму эта тема обсуждаль не однажды.
 

zarus

Хитрожопый макак
Чтобы писать "так чтобы скрипт работал быстрее", надо просто писать правильные скрипты. :) А как писать правильные скрипты написано в:
1. FAQ
2. TDD

-~{}~ 23.12.05 16:16:

Использовать ссылки на переменные там, где это нужно. Экономит память, и соответственно, позволяет работать быстрее (за счет того, что не будет свапа).
 

Hummerstadt

Новичок
mit
используй
PHP:
// начало кода
function getmicrotime()
{
	list($usec,$sec)=explode(" ",microtime());
	return((float)$usec+(float)$sec);
}
$_start_time=getmicrotime();

// конец кода
$precision=4;
$_end_time=getmicrotime();
if(extension_loaded('bcmath'))
{
	$r=bcsub($_end_time,$_start_time,$precision);
}
else
{
    $r=$_end_time-$_start_time;
}
printf('<br>Run time: %1.'.$precision.'f sec.',$r);
в своих экспериментах. Можно увидеть интересные вещи.
В частности, проверка if(!$var) занимает намного меньше времени, чем if($var). При миллионе итераций, естественно :)
 

master_x

Pitavale XXI wieku
texrdcom
это перевод php скрипта в си программу и её компилирования в exe но и это не дает чудес быстроты - ищи по форуму эта тема обсуждаль не однажды.
так а вот тут уже галиматья, нельзя давать такие советы, все таки самой распространенной производственной платформой для php является Unix-подобные системы. Да и делать это надо все с умом. Чудес конечно не будет... НО если потом использовать к примеру FastCGI то прирост в скорости будет заметный. А вообще, надо ли оно? Автор может каждый раз вытаскивает через запросы всю таблицу в массив, а потом сортирует, не зная о возможностях SQL... И думает об оптимизации. Самое смешное будет если он сидит дома на Виндовсе и пишет гестбуку.
Кстати, советы что ты привел, очень спорные, кроме первого... По-любому экономия на спичках.
топикстартеру
Если ты решил писать на PHP пиши правильно и не задумывайся об оптимизации. Если надо что-нибдуь быстрее, то пиши свой PHP.
zaurus
ссылки там где это надо, это где?
 

whirlwind

TDD infected, paranoid
> как сделать так чтобы скрипт работал быстрее
избегать велосипедов
 

Kelkos

Сам себе программер
мндя.. меня просто убивают советы типа: используй foreach вместо list .. гыыы.. это экономия на спичках.
самое больное место большинства программ - это кривые базы и кривые запросы.. ну и иногда видел жуткий парсинг регулярками. Вот таких вещей надо избегать. Всё остальное - мелочи.
 

edogs

Новичок
Автор оригинала: Гравицапа
Илья Альшанетский PHP & Performance
(на англ.)
Любопытное чтиво.
Есть вопрос: стр. 38-39. Content Caching. Имхо - не работающий пример, и в реале (тестили) и по документации.
There is currently no way to process the data with output buffering functions in the shutdown function. Shutdown function is called after closing all opened output buffers thus,
Если это действительно ошибка, то стоит ли сделать соответствующие выводы о других постулатах книжки.
 

zarus

Хитрожопый макак
Автор оригинала: master_x
ссылки там где это надо, это где?
Например при передаче в функции, когда заранее известно, что будут передаваться большие массивы в переменной
Если func(array(....)), то здесь нет смысла в передаче по ссылке.
А вот для {$str = array(...); func($str);} уже имеет смысл передавать по ссылке. Это частный случай, не всегда это нужно, но все же... Так же, как и возврат по ссылке в особых случаях.
 

edogs

Новичок
Автор оригинала: zarus
Например при передаче в функции, когда заранее известно, что будут передаваться большие массивы в переменной.
А то что передача по ссылке экономит память это теория или практика?
Как-то на глаза попадался простой практический пример с memory_get_usage доказывающий что данные при передаче по ссылке дублируются.
 

zarus

Хитрожопый макак
Автор оригинала: edogs
А то что передача по ссылке экономит память это теория или практика?
Как-то на глаза попадался простой практический пример с memory_get_usage доказывающий что данные при передаче по ссылке дублируются.
Некорректный пример использования передачи по ссылке?
Данные в ПХП практически всегда передаются "по ссылке", если не происходит их дальнейшее изменение (Copy-on-write). Поэтому использовать передачу по ссылке имеет смысл только там, где нужно изменить входные данные. И то, что экономит - это практика, и не только в ПХП. Другое дело, что в ПХП он может работать некорректно...
 
Сверху