Осенью 2014 мне катастрофически не хватало времени и ушёл в глубокие минуса по кредитам. Тогда у меня и появилась задача: как мне научиться экономить время и деньги. Ответ оказался прост: нужно экономить время и деньги одновременно. Ведь часто бывает, что экономя деньги — тратишь много времени, или экономя время — тратишь деньги. Тогда и понадобилось переводить время в деньги и обратно, чтобы оптимизировать их потребление.
Рубрика «оптимизация» - 38
Перевод времени в деньги и обратно
2015-03-09 в 15:30, admin, рубрики: Алгоритмы, время, деньги, жизнь, инфляция, математика, оптимизация, экономияУменьшение накладных расходов для утилит на golang
2015-02-23 в 19:23, admin, рубрики: Go, golang, overhead, накладные расходы, оптимизация, Программирование, системное администрированиеЦель работы — сократить накладные расходы на хранение большого количества утилит, написанных на golang.
Один из побочных эффектов статической компиляции golang — относительно большие накладные расходы на хранение рантайма и всех используемых библиотек внутри каждого исполняемого файла. Например небольшая утилитка, которая только и делает что обращается через сеть к серверу и выполняет простые полученные команды — весит 5.5Мб.
Когда такая утилитка одна — это в современных условиях это еще не страшно. Когда утилиты накапливаются и их становится уже несколько десятков или сотен — чисто по-человечески становится жалко сотен мегабайтов, утекающих «вникуда».
Для решения этой проблемы я написал библиотеку multiex, которой и делюсь с сообществом. С его помощью можно объединить несколько программ в один исполняемый файл с минимальными изменениями внутри кода программ и без изменения внешнего поведения. Мысль была взята у busybox — все программы компилируются в один файл, а выполняемый код выбирается при запуске, исходя из имени запускаемого файла.
Разбор вызовов функций в PHP
2015-02-19 в 14:07, admin, рубрики: php, Блог компании Mail.Ru Group, Веб-разработка, высокая производительность, оптимизация, Совершенный код, срыв покровов, метки: phpЭтот пост посвящён оптимизации PHP с помощью профайлера Blackfire в PHP-скрипте. Нижеприведённый текст является подробным техническим объяснением статьи в блоге Blackfire.
Обычно применяется метод strlen:
if (strlen($name) > 49) {
...
}
Однако такой вариант примерно на 20% медленнее этого:
if (isset($name[49])) {
...
}
Выглядит неплохо. Наверняка вы уже собрались открыть ваши исходники и заменить все вызовы strlen() на isset(). Но если внимательно прочитать оригинальную статью, то можно заметить, что причина 20-процентной разницы в производительности — многократные вызовы strlen(), порядка 60-80 тысяч итераций.
Читать полностью »
Нестандартная оптимизация проектов на PHP
2015-02-18 в 15:24, admin, рубрики: php, оптимизация, память, Серверная оптимизация, метки: phpВ данной публикации хочу рассказать о том, как нетрадиционными методами мы смогли снизить нагрузку на серверы и ускорить время обработки страницы в несколько раз.
Традиционные методы, думаю, всем известны:
- Оптимизация SQL-запросов;
- Поиск и исправление узких мест;
- Переход на Memcache для часто используемых данных;
- Установка APC, XCache и подобных;
- Клиентская оптимизация: CSS спрайты и т.п.
В нашем же проекте всё это было сделано, но при этом проблема скорости обработки страниц сохранялась. Средняя скорость обработки страницы была в районе 500мс. В один прекрасный момент пришла идея проанализировать, какие ресурсы есть, и на что они могут тратиться.
Читать полностью »
5 недопустимых ошибок при сборе отзывов о продукте
2015-02-18 в 7:32, admin, рубрики: Alconost, feedback, UX, Блог компании Alconost, Inc., веб-аналитика, Исследования и прогнозы в IT, менеджмент проектов, обратная связь, опрос, оптимизация, отзывы, пользователи, Развитие стартапа, Управление продуктом, управление проектами, фичи
В начале работы над проектом или на этапе радикальных изменений в продукте трудно удержаться от искушения опросить всех своих пользователей, чтобы определиться с положением дел. Обычно это ошибка. Вообще-то есть целый ряд общих ошибок, которые происходят снова и снова. Мы в Alconost перевели для вас пять подсказок по сбору отзывов о продукте.
Читать полностью »
Прикладная практика оптимизации и немного истории
2015-02-17 в 15:43, admin, рубрики: Алгоритмы, идентификация модели, математика, оптимизация, прикладная математика, Программирование «Тысячу долларов за один удар кувалдой?!» — вскричал удивлённый, но счастливый (и спасённый решением проблемы) инженер паровой машины. «Нет, удар стоит 1$, остальное — за знание куда, когда и как сильно ударить» — ответил старый мастер.
Типа эпиграфа.
В патентовании есть такая категория изобретений, когда патентуется не то, что человек/коллектив придумал (оно уже достаточно давно известно, например, клей), и не новый способ достижения актуальной цели (например, герметизация раны от инфекции). А патентуется, например, применение широко известного вещества в совершенно новом (для данного вещества), но тоже хорошо и давно известном для достижения цели применении. «А давайте попробуем заклеить рану клеем БФ-6? О! А он, оказывается, имеет бактерицидные свойства..., и рана под ним дышит..., и быстрее заживает! Надо застолбить и применять!»
В прикладной математике есть инструменты, грамотное применение которых позволяет решать оч-ч-чень большой круг самых различных задач. Об этом я и хочу вам рассказать. Может кого натолкну на поиски своего нетривиального применения успешно освоенных алгоритмов или приёмов/программ. Здесь будет мало отсылок на строгие математические инструменты или соотношения, больше качественный разбор преимуществ и приложений численного метода (методов), сыгравшего в моей жизни большую роль и ставшего основой решения важных профессиональных задач.
Читать полностью »
Как сделаны фоны в Homeworld2 изнутри
2015-02-12 в 16:21, admin, рубрики: game development, Homeworld, графика, игра, космос, оптимизация, Работа с анимацией и 3D-графикой, метки: HomeworldЭта статья является переводом сразу двух статей от Simon Schreibt. Обе статьи на одну тему и являются взаимодополняющими. Не пугайтесь того, что в начале все набрано большими буквами, это стилистика автора и я постарался максимально её сохранить.
То, что вы видите тут
это сносшибательные фоны
одной из наиболее прекрасных научно-фантастических игр.
H o m e w o r l d 2
Рефакторинг серверной страховой компании: когда физического места меньше, чем данных
2015-02-12 в 7:12, admin, рубрики: oracle, violin, апгрейд, бд, Блог компании КРОК, ит-инфраструктура, оптимизация, Серверное администрирование, системное администрирование, хранение данных, метки: Violin
Страховые — третьи после банков и сотовых операторов потребители «тяжелого» IT-железа. На момент начала работ ситуация была такая: в офисе одной компании стояла их центральная серверная (напоминающая небольшой машзал дата-центра), и в ней, в целом, всё прекрасно работало.
Проблема была в том, что место под стойки (и в самих стойках) в серверной кончилось ещё 2 года назад. В других двух ЦОДах место было, а вот здесь — нет.
Вторая проблема в том, что основная база продакшна лежала на 149 томах, физически — как швейцарский сыр в серверах. Обусловлено это было тем, что когда требовалось её увеличить, находили первую свободную дырку в физических дисках и пихали туда. Между томами базы могли находиться базы других проектов, ПО, разные временные файлы и так далее. В общем, нужно было наводить порядок. Читать полностью »
Еще один способ сжатия CSS файлов
2015-02-10 в 11:56, admin, рубрики: css, javascript, Клиентская оптимизация, оптимизация
На изображении выше многие увидят известную картину. Так выглядит большинство CSS файлов на продакшене. Мы все стараемся, чтобы наши веб-страницы загружались быстро; для достижения этой цели используем различные инструменты и техники оптимизации загрузки и рендеринга страниц. Об одном, но редко используемом методе, я бы хотел поговорить и рассказать, как мне удалось сократить размер CSS файла почты mail.ru на 180Кб.
Читать полностью »
Пишем быстрый и экономный код на JavaScript
2015-01-16 в 19:25, admin, рубрики: javascript, бенчмаркинг, быстродействие, Клиентская оптимизация, оптимизация, ПрограммированиеТакой движок JS, как V8 (Chrome, Node) от Google, заточен для быстрого исполнения больших приложений. Если вы во время разработки заботитесь об эффективном использовании памяти и быстродействии, вам необходимо знать кое-что о процессах, проходящих в движке JS браузера.
Что бы там ни было — V8, SpiderMonkey (Firefox), Carakan (Opera), Chakra (IE) или что-то ещё, знание внутренних процессов поможет вам оптимизировать работу ваших приложений. Но не призываю вас оптимизировать движок для одного браузера или движка – не делайте так.
Задайте себе вопрос:
— можно ли что-то в моём коде сделать более эффективным?
— какую оптимизацию проводят популярные движки JS?
— что движок не может компенсировать, и может ли сборка мусора подчистить всё так, как я от неё ожидаю?
Есть много ловушек, связанных с эффективным использованием памяти и быстродействием, и в статье мы изучим некоторые подходы, которые хорошо показали себя в тестах.
Читать полностью »