Ни для кого не секрет, что программисты очень любят бенчмарки. Ведь что может быть лучше, чем взглянуть на пару графиков, а потом с умным видом рассуждать о том, что Common Lisp быстрее PHP, а игры под FreeBSD идут быстрее, чем под Linux? А тем временем многие небезосновательно полагают, что бенчмаркам вообще нельзя верить. Я бы не был уж настолько категоричен, но на самом деле в этом есть существенная доля правды. Давайте разберемся, почему.

Многие программы на Erlang прекрасно распараллеливаются. Если некая задача разбивается на независимые части, мы можем просто создать для каждой части отдельный процесс. Однако процессы в Erlang хоть и дешевые, но не бесплатные. Бездумно наплодив кучу процессов, можно с легкостью уронить все приложение. Давайте попробуем решить эту проблему, создав пул процессов фиксированного размера. Задания будут раздаваться этим процессам при помощи gen_server’а, хранящего очередь задач.

В заметке о двенадцати эффективных методах оптимизации программ мемоизация была названа в качестве одного из эффективных методов. Сегодня совместными усилиями мы напишем небольшую библиотеку на Erlang, которая упростит использование этой оптимизации в наших программах. Заодно мы попрактикуемся в использовании ETS.

Программисты постоянно занимаются оптимизацией программ. Это такая же неотъемлемая часть работы, как исправление багов или рефакторинг. Обычно, говоря «оптимизация», мы имеем в виду ускорение программы. Несмотря на то, что под оптимизацией также может пониматься уменьшение объема используемой оперативной памяти или иных ресурсов (скажем, сетевого трафика или заряда батареи), в данной заметке речь пойдет именно об ускорении.

Вы, конечно же, в курсе, что этот блог работает на WordPress. Некоторое время назад я начал серьезно беспокоиться относительно быстродействия этого движка. Во-первых, меня волновало количество используемой им памяти. Например, когда по блогу начинают ходить поисковые боты, WordPress запросто может скушать 1 Гб оперативки. Во-вторых, я был обеспокоен временем, за которое у пользователя загружаются страницы. В случае попадания в кэш проблем не возникает, но иначе страница запросто может генерироваться 1-2 секунды.

Сегодня товарищ redp озадачил меня интересным вопросом. Дескать, если современные компиляторы такие умные, то почему GCC не в состоянии преобразовать даже элементарный макрос инверсии байт двойного слова в ассемблерную инструкцию bswap?

Если вы давно читаете мой блог, то можете помнить, как пару раз я говорил о Python разные неприятные вещи, дескать он медленный и памяти много кушает. При этом даже приводились различные пруфлинки. Но, откровенно говоря, нехорошо судить о языке по тому, массивы какой вложенности он поддерживает, с какой скоростью он выполняет пустой цикл из 100500 итераций и тд. Нас же интересует, как он справляется с типовыми задачами. Так что я решил провести собственный небольшой эксперимент.

Данные текст является переводом статьи Reduce WordPress CPU Usage #3 — Reduce your database queries, опубликованной в блоге cravingtech.com. Также вы можете ознакомиться с переводом первой и второй статьи из этой серии.

Высокая нагрузка на процессор может быть вызвана большим числом sql-запросов, производимых WordPress. В WordPress-блогах почти все данные берутся из базы данных — комментарии, посты, URL блога, расположение CSS-файлов и прочая информация, необходимая плагинам.

Данные текст является переводом статьи Reduce WordPress CPU Usage #2 — Uninstalling a WordPress plug-in completely, опубликованной в блоге cravingtech.com. Также вы можете ознакомиться с переводом первой и третьей статьи из этой серии.

Известно ли вам, что деактивация и удаление плагина WordPress не обязательно означает удаление его таблиц из базы данных? Эти таблицы захламляют базу данных, и я уверен, что это оказывает влияние на блог, пусть и небольшое.

Данные текст является переводом статьи Reduce WordPress CPU Usage #1 — General tips, опубликованной в блоге cravingtech.com. Также вы можете ознакомиться с переводом второй и третьей статьи из этой серии.

От переводчика: я случайно наткнулся на данную серию статей, блуждая по просторам всемирной сети. Материал так сильно мне понравился, что я решил перевести его на русский язык.