Многие программы на 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. Также вы можете ознакомиться с переводом второй и третьей статьи из этой серии.

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