Большинство дорогих операций в PHP?

Что такое некоторые самые дорогие операции в PHP? Я знаю вещи как злоупотребление, оператор может быть дорогим. Что еще Вы рассмотрели бы?

6
задан Darrell Brogdon 24 December 2009 в 19:23
поделиться

8 ответов

  • serialize() медленно, как и eval(), create_function(), и порождение дополнительных процессов через system() и связанные с ней функции.
  • остерегайтесь всего, что APC не может кэшировать -- conditional includes, eval()ed code и т.д.
  • Открытие соединений с БД. Всегда кэшировать соединения и использовать их повторно.
  • Клонирование объектов
  • Регулярные выражения. Всегда используйте обычные строковые операции над регулярными выражениями, если вам не нужна функциональность regexp, например, используйте str_replace() поверх preg_replace() там, где это возможно.
  • Протоколирование и запись на диск могут быть медленными - исключите ненужные протоколирования и файловые операции

Некоторые микро-оптимизации, которые являются хорошей практикой, но не будут иметь большого значения для вашей итоговой производительности:

  • Использование echo быстрее, чем печать
  • Сосредоточение переменных быстрее, чем использование их в строке в двойных кавычках.
  • Использование echo со списком аргументов быстрее, чем сосредоточение аргументов. Пример: echo 'How are you ',$name,' I am fine ',$var1 быстрее чем echo 'How are you '.$name.'. Я в порядке ".$var1
  • Разработайте с включенными Уведомлениями и Предупреждениями. Убедиться, что они не сработают, избавляет PHP от необходимости запускать на них управление ошибками.
19
ответ дан 8 December 2019 в 02:46
поделиться

Вместо того, чтобы пытаться вычислить потенциальные медленные области, используйте инструмент профилирования. Установка xDebug, вероятно, была одной из самых простых и лучших вещей, которые я сделал для улучшения кода, который я пишу. Для достижения наилучших результатов установите WinCacheGrind (или правильную версию для вашей операционной системы).

.
5
ответ дан 8 December 2019 в 02:46
поделиться
 "Hello $name"

синтаксис медленнее, чем

'Hello ' . $name

также __get() __set() __call() и т.д. медленнее

и, если вас это так волнует, вы можете использовать оптимизированные структуры из SPL

.
4
ответ дан 8 December 2019 в 02:46
поделиться

Все, что происходит через сетевое соединение - например, вызов веб-сервиса : обычно это занимает больше времени, чем выполнение операции локально.

(Даже если это не будет стоить много CPU, это будет стоить времени)

2
ответ дан 8 December 2019 в 02:46
поделиться

Я бы сказал, SQL-запросы внутри циклов. Например:

foreach ($db->query('SELECT * FROM categories') as $cat)
{
    foreach ($db->query('SELECT * FROM items WHERE cat_id = ' . $cat['cat_id']) as $item)
    {
    }
}

Который, для записи, можно было бы укоротить в нечто подобное:

$sql = 'SELECT c.*, i.*
          FROM categoriess c
     LEFT JOIN items i USING (cat_id)
      ORDER BY c.cat_order';

foreach ($db->query($sql) as $row)
{
}
1
ответ дан 8 December 2019 в 02:46
поделиться

curl_exec() очень медленная, по сравнению с типичными операциями. Также большинство операций str_* быстрее, чем операции регресса.

.
1
ответ дан 8 December 2019 в 02:46
поделиться

foreach() утверждения, особенно с вложением, часто дорогостоящие; хотя это так же наивно - и иногда плохо спланированный - подход к программированию, как и вина php.

Хотя я думаю, что это правда и для JS и других языков, так что почти наверняка это моя вина. =/

.
0
ответ дан 8 December 2019 в 02:46
поделиться

По моему собственному опыту, самой дорогой операцией в реальном выражении является оператор echo. Попробуйте соединить все строки вместе перед тем, как выводить их в браузер, за этим последуют вызовы баз данных, особенно joins!

Код также иногда может получить увеличение производительности на x10, просто рефакторинг своих алгоритмов и структур данных. Получите любую программу и попробуйте наполовину ее длину, можете ли вы повторить наполовину?

.
0
ответ дан 8 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: