Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
PHP производительность
Что я могу сделать, чтобы увеличить производительность / скорость моих скриптов PHP без установки программного обеспечения на моих серверах?
Профиль. Профиль. Профиль. Я не уверен, есть ли там что-нибудь для PHP, но это должно быть просто написать небольшой инструмент для вставки информации профилирования в ваш код. Вам потребуется профилировать время выполнения функций и время выполнения запросов SQL.
Итак, где у вас есть функция:
function foo($stuff) {
...
return ...;
}
Я бы изменил его на:
function foo($stuff) {
trace_push_fn('foo');
...
trace_pop_fn('foo');
return ...;
}
(Это один из тех случаев, когда множественные возвраты в функции становятся помехой.)
И SQL:
function bar($stuff) {
trace_push_fn('bar');
$query = ...;
trace_push_sql($query);
mysql_query($query);
trace_pop_sql($query);
trace_pop_fn('bar');
return ...;
}
В конце концов, вы можете сгенерировать полное trace выполнение программы и использовать все виды методов для выявления ваших узких мест.
Одним из разумных методов, который можно легко снять с полки, является кэширование. Как правило, огромное количество времени уходит на создание ресурсов для клиентов, которые являются общими между запросами (и даже между клиентами); устранение этой работы во время выполнения может привести к резкому увеличению скорости. Вы можете сбросить созданный ресурс (или фрагмент ресурса) в файл за пределами веб-дерева, а затем при необходимости прочитать его обратно. Очевидно, что потребуется некоторое профилирование, чтобы убедиться, что это действительно быстрее, чем регенерация - принудительное возвращение веб-сервера на диск регулярно может быть вредным, поэтому ресурс действительно нуждается в интенсивном повторном использовании.
Вы также можете быть удивлены, сколько времени тратится на плохо написанные запросы к базе данных; время, которое обычно генерируется запросами, и посмотреть, можно ли их переписать. Количество времени, затрачиваемого на выполнение фактического кода PHP, как правило, довольно ограничено, если только вы не используете некоторые неоптимальные алгоритмы.
Ни один из них не ограничивается PHP, хотя некоторые из PHP "magicy" подходов/функций могут чрезмерно защитить человека от размышлений об этих проблемах. Например, я недавно обновил скрипт, который использовал array_search для использования двоичного поиска по отсортированному массиву, и получил ожидаемое экспоненциальное ускорение.
Действительно рассмотрите возможность использования XDebug profiler: это помогает проверить, насколько определенная функция выполняется против того, что вы ожидали бы.
Я стараюсь уменьшить количество инструкций, одновременно улучшая читаемость кода, заменяя логику поиском по массивам, когда это уместно. Это то, что написал Джефф Этвуд в [лучший код-это вообще не КОД][1].
- Кроме того, избегайте петель внутри другого цикл и вложенные операторы if/else.
- Короткие функции. Иногда очень много код не нужно выполнять когда результат-значение уже есть известный.
Ненужное тестирование:
if (count ($array) === 0) return;
также можно записать как:
если (! $array) возвращение;
Еще одна функция-вызов исключен!
[1]: http://www.codinghorror.com/blog/archives/000878.html "The Best Code is No Code At All"
Вы можете оптимизировать код с двумя основными вещами:
Оптимизация PHP связанной библиотеки и сервера
Пройдите через https://www.digitalocean.com/community/articles/how-to-optimize-apache-web-server-performance или
Вы можете использовать инструмент профилирования, такой как xhprof, чтобы просмотреть, какая часть вашего кода может быть оптимизирована, и вот ссылка для перехода: http://michaelsanford.com/compiling-xhprof-for-php-5-4/
Оптимизация кода с помощью профилировщика кода и анализатора кода
Для использования этого плагина необходимо установить Netbeans. Вот шаги, которые вам нужно выполнить:
1) Откройте NetBeans и выберите пункт меню Сервис > плагин. Затем найдите имя плагина "phpcsmd" на вкладке доступный плагин и установите его оттуда.
2) Теперь откройте terminal и быть там в качестве суперпользователя, введя команду "sudo su".
3) Установите библиотеку PEAR (если она не установлена) в свою систему, запустив следующие команды в свой terminal
a) wget http://pear.php.net/go-pear.phar
b) php go-pear.phar
Как нам это нужно для установки дальнейших аддонов.
4) затем выполните команду
"pear config-set auto_discover 1"
Это будет использоваться для установки автоматического обнаружения пути "true" для необходимых плагинов. Таким образом, они получают установку в нужное место автоматически.
5) затем выполните команду ниже, чтобы установить PHP code sniffer.
"pear install --alldeps pear/PHP_CodeSniffer"
6) Теперь, чтобы установить детектор беспорядка PHP, выполнив следующую команду
"pear install --alldeps phpmd/PHP_PMD"
Если вы получаете сообщение об ошибке типа "недопустимое имя пакета/файл пакета "phpmd/PHP_PMD"" при установке этого модуля. Вы должны использовать эту команду "pear channel-discover pear.phpmd.org", чтобы избавиться от этой ошибки. После этой команды вы можете снова запустить приведенную выше команду, чтобы установить детектор беспорядка.
7) Теперь, чтобы установить PHP зависит, выполнив следующую команду
"pear install --alldeps pdepend/PHP_Depend"
8) Теперь установите детектор PHP Copy Paste, выполнив следующую команду
"pear install --alldeps phpunit/phpcpd"
9) затем выполните команду
"pear config-set auto_discover 0"
Это будет использоваться для установки пути автоматического обнаружения "false".
10) затем откройте net beans и следуйте по пути Tools>Options>PHP>PHPCSMD
включение файлов происходит медленно, а требовать их еще медленнее. Если вы используете _ _ autoload для включения каждого класса, то это будет складываться. например.
Я всегда немного опасаюсь пытаться быть слишком умным в плане оптимизации кода, если это приносит в жертву коду clairty. Если вам нужно сделать код неясным, чтобы сделать его быстрым, не будет ли дешевле обновить hardwear вместо того, чтобы тратить свое время на попытки настроить код? В конце концов, процессорные циклы дешевле, чем циклы программистов.
Те, о которых я могу думать...
Инварианты циклов всегда хорошо бы на него посмотреть.
Напишите E_STRICT и E_NOTICE совместимый код, особенно если вы есть ошибки протоколирования.
Избегайте оператора@.
Абсолютные пути для requires и включает в себя.
Используйте strpos, str_replace и т.д. вместо регулярных выражений, когда это возможно.
Тогда есть куча других методов, которые могут сработать, но, вероятно, не дадут вам большой пользы.
Я отвечаю за большую систему отчетности, и мы отслеживаем самые медленные отчеты вроде этого. Я запускаю уникальный ключ в БД, когда начинается отчет, а затем, когда он заканчивается, я могу определить, сколько времени это заняло. Я использую базу данных, потому что таким образом я могу определить, когда тайм-аут страниц (что происходит намного чаще, чем мне бы хотелось)
Сначала следуйте некоторым другим советам, таким как профилирование и принятие правильных решений о распределении ресурсов, например кэширование.
Кроме того, учитывайте производительность внешних ресурсов, таких как ваша база данных. Например, в MySQL можно проверить медленный журнал запросов . Кроме того, убедитесь, что вы не создавали свою базу данных и не забыли об этом. Оптимизация ваших запросов (опять же для MySQL ) против реальных данных может стоить больших денег.
Всякий раз, когда я смотрю на проблемы производительности, я думаю, что лучше всего сделать это время, как долго ваши страницы работают, а затем посмотреть на самые медленные из них. Когда вы получаете эти реальные показатели, вы часто можете улучшить производительность на самых медленных из них на порядки, либо исправив медленный запрос SQL, либо, возможно, немного подтянув код.
Это, конечно, не требует никакого нового оборудования или специального программного обеспечения, просто критический взгляд на существующий код.
Тем не менее, это будет работать только так долго... если вы действительно получаете достаточно трафика, Чтобы достичь пределов вашего аппаратного обеспечения, и/или есть какой-то код, который просто изначально медленный и действительно необходимый, вам придется рассмотреть другие возможности.
Расмус Лердорф дал несколько хороших советов в своей недавней презентации "простое-это трудно" на FrOSCon '08. Если вы используете кэш байт-кода (а вы действительно должны его использовать), включение пропусков пути сильно повредит, поэтому оптимизируйте свой require/require_once.
1) Используйте последнюю версию PHP
Основная команда упорно работает над улучшением производительности PHP в каждой версии.
2) Используйте кэш байт-кода
Начиная с PHP 5.5 кэш байт-кода был добавлен в PHP с именем OPcache . Использование OPcache может иметь огромное значение, особенно с PHP 7. Он получает улучшения в каждой версии PHP и может даже получить реализацию JIT в будущем .
3) профилирование
При разработке профилирования дает Вам большое представление о том, что именно происходит. Это очень помогает находить узкие места в коде.
Один из наиболее часто используемых инструментов- XHProf , но официально больше не поддерживается и имеет проблемы с PHP >= 7. Альтернативой, когда вы хотите профилировать PHP >= 7, является Tideways , который является fork из XHProf .