Рубрика «оптимизация» - 40

Пусть мы хотим вычислить десятимиллионное число Фибоначчи программой на Python. Функция, использующая тривиальный алгоритм, на моём компьютере будет производить вычисления более 25 минут. Но если применить к функции специальный оптимизирующий декоратор, функция вычислит ответ всего за 18 секунд (в 85 раз быстрее):

Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в степень

Дело в том, что перед выполнением программы интерпретатор Python компилирует все её части в специальный байт-код. Используя метод, описанный хабрапользователем SkidanovAlex, данный декоратор анализирует получившийся байт-код функции и пытается оптимизировать применяющийся там алгоритм. Далее вы увидите, что эта оптимизация может ускорять программу не в определённое количество раз, а асимптотически. Так, чем больше будет количество итераций в цикле, тем в большее количество раз ускорится оптимизированная функция по сравнению с исходной.

Эта статья расскажет о том, в каких случаях и каким образом декоратору удаётся делать подобные оптимизации. Также вы сможете сами скачать и протестировать библиотеку cpmoptimize, содержащую данный декоратор.
Читать полностью »

Оценка 95 (A+) от SSL Labs Оптимизируя серверное окружение для максимальной производительности, обязательно столкнешься с задачей поддержки SSL-сертификатов и оптимизации скорости SSL-защищенного соединения. Совершенно условно, задачу по настройке поддержки SSL для nginx на Linux-окружении (в примерах используется RedHat/CentOS, но большая часть советов платформо-независимы) можно разбить на несколько составляющих:

  1. Оптимизация TCP/IP стека, включая размеры TCP окна.
  2. Оптимизация TLS-стека, включая OpenSSL.
  3. Конфигурация nginx с учетом настроек производительности, безопасности и обратной совместимости.

Читать полностью »

Недавно наша команда закончила разработку двухмерной бродилки-стрелялки для Android на движке AndEngine. В процессе был получен определенный опыт по решению проблем с производительностью и некоторыми особеностями движка, которым хочется поделиться с читателями Хабра. Для затравки вставлю кусочек скриншота из игры, а все технические детали и примеры кода уберу под кат.

Как мы боролись с тормозами в AndEngine
Читать полностью »

Недавно наша команда закончила разработку игры Galaxy Recon — двухмерной бродилки-стрелялки для Android на движке AndEngine. В процессе был получен определенный опыт по решению проблем с производительностью и некоторыми особеностями движка, которым хочется поделиться с читателями Хабра. Для затравки вставлю кусочек скриншота из игры, а все технические детали и примеры кода уберу под кат.

Как мы делали игру и боролись с тормозами в AndEngine
Читать полностью »

Образы Docker могуть быть очень большими. Многие превышают 1 Гб в размере. Как они становятся такими? Должны ли они быть такими? Можем ли мы сделать их меньше, не жертвуя функциональностью?

В CenturyLink Lab мы много работали над сборкой различных docker-образов в последнее время. Когда мы начали экспериментировать с их созданием, мы обнаружили, что наши сборки очень быстро раздуваются в объеме (обычным делом было собрать образ, который весит 1 Гб или больше). Размер, конечно, не столь важен, если мы говорим про образы по два гига, лежащие на локальной машине. Но это становится проблемой, когда вы начинаете постоянно скачивать/отправлять эти образы через интернет.

Я решил, что стоит копнуть поглубже и разобраться с тем, как работает процесс создания docker-образов, чтобы понять, что можно сделать для уменьшения размера наших сборок. Читать полностью »

Оптимизация конверсии: беспощадная критика 10 лендингов Landing page — безусловно важный для каждого предпринимателя инструмент продвижения продукта. Но взгляд владельца лендинга часто «замыливается», и он не замечает элементарных ошибок и недочетов своего детища, в такие моменты и необходима конструктивная критика. Поэтому мы решили поделиться материалом Amanda Durepos, где десяток лендингов подвергаются беспощадному разбору независимыми экспертами.

Нет сомнений, что действенная критика лендингов – целевых продающих страниц – это жесткие замечания, не щадящие самолюбие создателей лендинга. Но немного «боли» во благо — ради эффективности продающей страницы — со стороны экспертов по оптимизации может дать больше, чем долгие часы A/B-тестирования и маркетинговых исследований.
Читать полностью »

5+5 способов увеличить конверсию, используя психологические приемы. Часть 2 Продолжаем развивать тему повышения конверсии с помощью психологии. Сложно преуспеть в повышении продаж, не понимая клиента, его предпочтений и особенностей мышления. Предлагаем вам еще 5 способов замотивировать клиента совершить покупку (предыдущие пять способов — в первой части этого материала), которые базируются на актуальных психологических исследованиях. В них объясняется, как повысить конверсию, повлияв на максимальное количество посетителей, чтобы они начали использовать ваш продукт. Мы дополнили материал примерами. О том, почему не работают классические приемы оптимизации конверсии, и что с этим делать, читайте в статье "Все, что вы знаете об оптимизации конверсии — неправда".

6. Заставьте клиентов «проникнуться» вашим продуктом мгновенно

Исследования Magnetic Resonance Imaging (MRI) показали, что лобная кора мозга работает наиболее активно, когда мы с нетерпением ждем чего-либо.

Чтобы привлечь пользователей, напоминайте им, что при заказе вашего продукта (или использовании сервиса), им не придется сталкиваться с проблемой долгой доставки или ожидания – то есть, они сразу же смогут ощутить все преимущества покупки.
Читать полностью »

В ответ вот на эту статью, про выбор покупки серверов или оптимизации.

Хочется затронуть фактор людской психологии в принятии решений, его недооценку и важность на конечный результат.
Внизу статьи есть тезисное изложение, кому не хочется читать.

Как обычно происходит и почему

Действительно, существует такое распространенное мнение, что железо купить проще и надежнее, чем оптимизировать код.
Другой вопрос, а проводились ли достоверные исследования на эту тему? Думаю, нет, и это только подтверждает тезисы статьи «Программирование, как новый вид человеческой деятельности»

Однако, попробуем построить мысленный эксперимент с некоторыми допущениями. Рынок — это место для естественного отбора. Компании отбираются по признаку выживаемости. Кто обслужил клиента лучше, заработал денег больше и сумел удержаться на рынке, обойти конкуретов — тот и выжил. Обратная связь обеспечивает эволюцию компаний.
И, судя по тому, что компании как инвестируют миллионы долларов как в человеческий потенциал, так и в сервера, имеют место оба подхода, возможно даже их комбинация. О чем было сказано в исходной статье в комментах (комбинации подходов нередки и в других случаях в жизни, например, ястребы и голуби)
Читать полностью »

Дорогие Хабролюбители, всем привет! Не откроем Америку если скажем, что существуют сотни плагинов и библиотек, которые облегчают специализированные задачи, связанные с построением современных web интерфейсов. Angular один из них, про его производительность писалось много и в большинстве случаев даются рекомендации чего не нужно делать, чтобы все было хорошо.

Основное аргумент, сторонников — медленно работают неправильные приложения, а вот правильные не должны содержать более 2000-3000 элементов. Если содержит больше значит что-то не так. См. например http://iantonov.me/page/angularjs-osnovy.

Аргумент в общем вполне здравый, но всегда есть ситуации, когда нужно написать «неправильное» web приложение потому, что такие требования. В этой статье мы решили рассказать, как раз про такую задачу, и как мы ее решили. На наш взгляд статья будет полезна в большей степени профессиональным веб разработчикам. Итак, наша задача была сделать календарь для системы бронирования для одного спортивного клуба. Календарь отображает семь 12 – часовых блоков, каждый день из которых разделен на 15 минутные интервалы. В блоке может быть от 2-х до 10 DOM элементов. Вроде ничего не предвещало беды, верхняя граница ~3000.
Читать полностью »

Чем забит мой жесткий диск
Сегодня хочется воздать по заслугам программе-долгожительнице SequoiaView — приложению, созданному в начале двухтысячных годов Техническим университетом Эйндховена (Нидерланды). Приложение получилось настолько практичным, лаконичным и удобным, что уже более 10 лет выручает всех, у кого вдруг внезапно закончилось место на диске, а сейчас как раз позарез нужно расчистить пару десятков гигабайт, чтобы поставить новую игру, скачать фильм или просто забить это место в очередной раз мелким мусором.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js