хэширования
знаю ваши хэши (массивы / таблицы / упорядоченные карты / как вы их называете). поиск по хешу очень быстрый, и иногда, если у вас есть O (n ^ 2) циклов, вы можете уменьшить их до O (n), сначала организовав их в массив (с ключом по первичному ключу), а затем обработав их.
пример:
foreach ($results as $result)
if (in_array($result->id, $other_results)
$found++;
медленно - in_array
проходит через все $other_result
, что приводит к O (n ^ 2).
foreach ($other_results as $other_result)
$hash[$other_result->id] = true;
foreach ($results as $result)
if (isset($hash[$result->id]))
$found++;
второй намного быстрее (в зависимости от результирующих наборов - чем больше, тем быстрее), потому что isset () имеет (почти) постоянное время. на самом деле, это не очень хороший пример - вы могли бы сделать это еще быстрее, используя встроенные функции php, но вы поняли идею.
оптимизация (My) SQL
mysql.conf: Я понятия не имею, какую производительность вы можете получить, оптимизируя конфигурацию mysql вместо того, чтобы оставить значение по умолчанию. но я читал, что вы можете игнорировать каждый тест postgresql, который использовал конфигурацию по умолчанию. afaik с настройкой менее важен для mysql, но почему игнорировать практическое правило: попробуйте поместить всю базу данных в память:)
объяснить [запрос]: очевидный вопрос, многие люди ошибаются. узнать об индексах. Есть правила, которым вы можете следовать, вы можете сравнить их, и вы можете иметь огромное значение. если вы действительно хотите всего этого, узнайте о различных типах индексов (btrees, hashes, ...) и о том, когда их использовать.
кэширование
Кэширование
сложно, но если все сделано правильно, разница будет (а не ). по моему мнению: если вы можете жить без кэширования, не делайте этого. это часто добавляет много сложности и точек неудач. Google однажды сделал небольшое кэширование прокси (чтобы ускорить работу каналов), и некоторые люди видели личную информацию других.
в php, существует 4 вида кеширования, которые регулярно используются:
кэширование запросов: почти всегда переводится в memcached (иногда в общую память APC). сохранить результирующий набор определенного запроса в механизм хранения быстрого ключа / значения (= хэширования). запросы (теперь поиски) становятся очень дешевыми.
кеширование вывода: сохраните сгенерированный html для дальнейшего использования (вместо того, чтобы регенерировать его каждый раз). это может привести к значительному ускорению, но в некоторой степени работает против динамического характера PHP.
Кэширование браузера: А как насчет etags и http ответов? если все сделано правильно, вы можете избежать большинства работ в самом начале ! большинство программистов php игнорируют эту опцию, потому что они понятия не имеют, что такое HTTP.
Кэширование кода операции: APC, Zend Optimizer и так далее. делает загрузку PHP-кода быстрее. может помочь с большими приложениями. не имеет ничего общего с (медленными) внешними источниками данных, а потенциал несколько ограничен.
иногда невозможно жить без кэшей, например если речь идет о миниатюрах. Изменение размера изображения очень дорого, но его легко контролировать (большую часть времени).
профилировщика
xdebug показывает узкие места вашего приложения. если ваше приложение работает слишком медленно, полезно знать, почему.
запросов в циклах
есть (php-) эксперты, которые не знают, что такое объединение (и для каждого, кого вы обучаете, появятся два новых без этого знания - и они напишут основы, см. Закон Шналлеса ). иногда эти запросы в цикле не так очевидны, например, если они приходят с библиотеками. считать запросы - если они растут с показанными результатами, что-то не так.
Неопытные разработчики имеют первостепенное, ненасытное желание писать фреймворки и системы управления контентом
закон Шналле