Pull to refresh

Что такое memcached и для чего он нужен

Lumber room
Memcached (читается мемкЭшид) — это система кэширования различных объектов в оперативной памяти. Позволят значительно снизить нагрузку на базу или файловую систему и ускорить работу сайта, за счет того, что работа с памятью быстрее чем с базой или файлами. Насколько я помню была разработана для LJ, а сейчас применяется практически на всех проектах с большим количеством пользователей. Запускается отдельным сервером.

Если вы собираетесь делать свой стартап, то советую обратить на эту технологию пристальное внимание. За счет кэширования можно значительно уменьшить кол-во запросов к базе данных.

Для PHP есть специальный PECL-модуль (то есть он не поставляется вместе с PHP, надо отдельно скачивать и компилировать). Думаю также есть готовые модули для Perl, Python (Django), Ruby(RoR) и других языков.

В API самого мемкеша есть только базовые функции: выбор сервера, коннект и дисконект, добавление, удаление, обновление и получение объекта, инкримент и дикримент. Для каждого объекта устанвливается время жизни, от 1 секунды до бесконечности. При переполнение памяти более старые объекты автоматически удаляются. Для PHP также есть уже готовые библиотеки для работы с мемкешем, которые дают дополнительную функциональность.

Базовый алгоритм работы с мемкешем следующий — обращается к мемкеш-серверу за объектом, если он есть то берем его. Если нет, то обращаемся к базе данных (или где там еще у вас могут хранится данные), формируем объект, выдаем его пользователю и добавляем в мемкеш, чтобы мы могли прочитать его при следующем обращение.

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

Сейчас на одном из своих проектов (сайт знакомств) я пробую использовать мемкеш для реализации показа статуса пользователя он- или оффлайн..
Total votes 15: ↑9 and ↓6 +3
Views 14K
Comments 12

Производительность IronRuby, Ruby 1.8 и Ruby 1.9

Ruby *
Некотое время назад, после выхода IronRuby сотрудник IBM Антонио Кангиано провел тесты по производительности и получил интересные результаты.
image
Как мы видим из графика, IronRuby уверенно шагает вперед и дает хорошие результаты производительности. Не смотря на результат графиков IronRuby не быстрее Ruby 1.9.1, чего не скажешь при сравнение с веткой 1.8.х

Как бы там не было, быстрее IronRuby или медленнее Ruby 1.9, он дает хорошую альтернативу для программистов, которые разрабатывают и развертывают свои приложения на Windows. Соединив мощности .NET и VS — IronRuby дает интересные возможности, включая выполнения Ruby кода в браузере, благодаря таким проектам как Silverlight/Moonlight и Gestalt.

На данный момент IronRuby нацелен на реализацию функционала Ruby 1.8.x.
Официальный сайта проекта IronRuby
Небольшой обзор IronRuby 0.9 от XaocCPS
Total votes 34: ↑21 and ↓13 +8
Views 1K
Comments 21

Тюнинг производительности для ASP.NET. Часть 1

.NET *
Translation
Untitled-1В первой части уловок с производительностью для ASP.NET и IIS7 мы рассмотрим некоторые простые, но тем не менее мощные возможности web.config файла. Используя некоторые трюки мы увеличим производительность любого нового или существующего веб-сайта, не изменяя ничего, кроме web.config файла.
Читать дальше →
Total votes 22: ↑12 and ↓10 +2
Views 6.3K
Comments 4

Clustered index в InnoDB и оптимизация запросов

Badoo corporate blog
В последнее время в сети часто пишут про clustered index в InnoDB и таблицах MySQL, но, несмотря на это, на практике используют довольно редко.
В данной статье мы покажем на двух реальных примерах, как мы оптимизировали достаточно сложные системы Badoo, основываясь на понимании принципов работы clustered index.

Clustered index – форма организации таблицы в файле. В InnoDB данные хранятся в дереве, в таком же, в котором лежат обычные B-TREE ключи. Таблица InnoDB сама по себе уже является большим B-TREE. В качестве значений ключа используется clustered index. Согласно документации, в качестве clustered index выбирается PRIMARY KEY. Если PRIMARY KEY отсутствует – выбирается первый UNIQUE KEY. Если и такого нет, то используется внутренний 6-тибайтный код.

Что же вытекает из такой организации данных на диске?
Читать дальше →
Total votes 78: ↑65 and ↓13 +52
Views 17K
Comments 41

Производительность: LINQ to XML vs XmlDocument vs XmlReader на Desktop и Windows Phone

.NET *
Не так давно мне пришлось делать приложение для Windows Phone работающее с xml-файлами. Всё было неплохо, но когда в файле стало ~100.000 записей, чтение их занимало ну уж очень много времени. И я решил сравненить производительность различных способов чтения данных из xml возможных на платформе .Net.

Подробности под катом.
Читать дальше →
Total votes 31: ↑27 and ↓4 +23
Views 12K
Comments 23

Список оптимизаций рендеринга DOM, реализуемых на уровне Javascript фреймворка

High performance *JavaScript *Client optimization *
С октября 2009 года я занимаюсь разработкой приложения для поиска и прослушивания музыки. Я стремлюсь организовать возможность быстрого взаимодействия пользователя с интерфейсом, и в качестве одного из средств ускорения взаимодействия использую различные способы для быстрой отрисовки страниц.

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

  • Использование CSS и переключение классов вместо перестроения DOM дерева
  • Повсемнестное кеширование выборок элементов ($('div.active_part span.highlighter')), атомарные операции по изменению (вместо всеобщей перерисовки, вместо переделывания больших участков DOM дерева)
  • Минимизации чтений DOM во время записи изменений состояний
  • Кеширование размеров и расположения элементов (это спасает от излишнего вычисления при считывании этих значений при наличии других изменений: чтение во время изменения множества частей дерева крайне негативно сказывается на производительности)
  • Аккуратное, не затягивающееся накопление изменений, необходимых произвести в DOM
  • Прикрепление частей изменяющихся коллекций единовременно (когда, например, в середину списка вставляется 3 новых элемента; createDocumentFragment) в конкретное место (after, before) вместо открепления всей коллекции от DOM и повторного прикрепления (и вместо того, чтобы перерисовывать весь список)
  • Прогрессивный асинхронный рендеринг: картина прорисовывается сразу с небольшим количеством деталей, затем деталей появляется всё больше
  • Клонирование нодов (как часть шаблонизации)
  • Кеширование и использование кеша результатов парсинга DOM шаблонов


image image
изображения из части с заголовком «Прикрепление частей изменяющихся коллекций единовременно...»
Читать дальше →
Total votes 68: ↑66 and ↓2 +64
Views 25K
Comments 31

RSConf: Обзор и видеоматериалы фронтенд-конференции в Минске

Website development *JavaScript *
Sandbox
image

The Rolling Scopes — минское сообщество фронтенд/javascript разработчиков. Мы занимаемся проведением митапов, воркшопов и Q&A сессий. А в этом году доросли до уровня, не побоюсь сказать этого слова, международной конференции. Наше 20-е мероприятие получилось помасштабнее остальных. В связи с этим непременно хочется поделиться деталями проведения, атмосферой и, конечно же, материалами.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Views 9.5K
Comments 5

COUNT(*)

SQL *Microsoft SQL Server *
Tutorial


У меня есть подборка простеньких вопросов, которые я люблю задавать при собеседовании. Например, как посчитать общее число записей к таблице? Вроде бы ничего сложного, но если копнуть глубже, то можно много интересных нюансов рассказать собеседнику.

Давайте начнем с простого… Эти запросы отличаются чем-то друг от друга с точки зрения конечного результата?

SELECT COUNT(*) FROM Sales.SalesOrderDetail
SELECT COUNT_BIG(*) FROM Sales.SalesOrderDetail
Подробнее
Total votes 84: ↑57 and ↓27 +30
Views 106K
Comments 75

Производительность фронтенда: разбираем важные метрики

VK corporate blog High performance *Website development *JavaScript *System Analysis and Design *
Обычно под производительностью понимают количество операций за определенный интервал времени и чем их больше, тем лучше. Но такое определение, да и подход в целом, мало применим к фронтенду, потому что у каждого пользователя будет свой «фронтенд». Именно об этом я и хочу поговорить, что же происходит «там», у пользователя, на другой стороне, в реальности, а не на вашем топовом MacBook.

Кроме это, я постараюсь вскользь рассмотреть общие правила оптимизации кода и некоторые ошибки на которые стоит обратить внимание. Ещё расскажу про инструмент, который помогает не только в профилировании, но и «из коробки» собирает кучу базовых метрик о производительности вашего приложения (и надеюсь, вы дочитаете этот пост до конца).
Читать дальше →
Total votes 65: ↑65 and ↓0 +65
Views 27K
Comments 22

Angular: Показываем скелетон страницы за три шага

TINKOFF corporate blog Website development *Open source *Angular *
Tutorial

Привет, меня зовут Олег. Я работаю в команде Тинькофф Бизнеса. В моей работе часто происходит ситуация, когда странице нужны данные с сервера. Пока мы запрашиваем эти данные, на странице надо что-нибудь показать. 

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

Читать далее
Total votes 28: ↑26 and ↓2 +24
Views 12K
Comments 5

Чем отличаются Dagger, Hilt и Koin под капотом?

OTUS corporate blog Programming *Development for Android *
Translation

Dagger и Koin, без сомнения, являются двумя самыми популярными фреймворками для внедрения зависимостей на Android. Обе эти библиотеки служат одной цели и кажутся очень похожими, но работают они по-разному.

А при чем здесь Hilt? Hilt — это библиотека, которая использует Dagger под капотом и просто упрощает работу с ним, поэтому все, что я говорю здесь о Dagger, применимо и к Hilt.

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

Читать далее
Total votes 7: ↑7 and ↓0 +7
Views 9.2K
Comments 0

Как использовать BeanShell: любимый встроенный компонент JMeter

OTUS corporate blog IT systems testing *
Translation

BeanShell — один из самых продвинутых встроенных компонентов JMeter. Он поддерживает синтаксис Java и расширяет его такими функциями, как свободные типы, команды и закрытие методов. Если ваш тестовый пример нестандартен и его реализация с помощью встроенных компонентов JMeter становится сложной или даже невозможной, BeanShell может стать отличным вариантом для достижения ваших целей.

Читать далее
Total votes 4: ↑3 and ↓1 +2
Views 3.2K
Comments 3

Hibernate Reactive: стоит ли оно того?

OTUS corporate blog Programming *Java *
Translation

В течение последнего года мы готовились к выпуску первого стабильного релиза Hibernate Reactive и пытались ответить на некоторые вопросы, которые у нас возникли.

Например, нам было интересно узнать, можем ли мы действительно показать, когда стоит переходить на Hibernate Reactive при работе с реляционными базами данных: как для нашего собственного понимания, так и для того, чтобы помочь каждому из вас принять разумное решение.

Читать далее
Total votes 6: ↑5 and ↓1 +4
Views 3.9K
Comments 0

Android Vitals — Это холодный старт?

OTUS corporate blog Development for Android *
Translation

Эта серия блогов посвящена мониторингу стабильности и производительности приложений Android в продакшне. В последних двух постах я описал то, что происходит с момента, когда пользователь нажимает на ярлык запуска программы, до момента отрисовки первой activity на мониторе.

Читать далее
Total votes 4: ↑3 and ↓1 +2
Views 2.2K
Comments 0

Android Vitals — Профилируем запуск приложения

OTUS corporate blog Programming *Development for Android *
Translation

Мои предыдущие статьи были посвящены мониторингу запуска Android-приложений в эксплуатационной среде. После того, как мы разобрались с метриками и сценариями, которые результируют в медленном запуске приложения, следующим шагом будет повышение производительности.

Чтобы понять, почему приложение медленно запускается, нам нужно его профилировать. Android Studio предоставляет несколько типов конфигураций записи профилирования:

Читать далее
Total votes 4: ↑2 and ↓2 0
Views 1.4K
Comments 0

JNI, часть 3: производительность Java/JNI/NDK

Ситимобил corporate blog Java *C++ *Development for Android *

Всем привет! Меня зовут Роман Аймалетдинов, я разрабатываю клиентское приложение Ситимобил. Продолжаю свою серию статей по JNI, так как технология используется редко, но иногда она бывает очень полезной (или просто интересной). В этот раз я покажу замеры производительности, достаточно тривиальные, но отображающие суть. И если вы не знакомы с JNI, но тема интересна, то советую ознакомиться с первой и второй частью этой серии статей.

Читать далее
Total votes 20: ↑18 and ↓2 +16
Views 3.5K
Comments 7

CSS-in-JS в Angular или все-таки CSS?

Bimeister corporate blog CSS *Programming *Angular *TypeScript *
✏️ Technotext 2021

Всем привет! Меня зовут Всеволод Золотов, я Senior Frontend в компании Bimeister.

CSS-in-JS очень быстро набрал популярность в React-комьюнити, но насколько актуален этот подход в Angular? В данной статье сравним удобство разработки и производительность двух визуально идентичных приложений (time-tracker), написанных с использованием SASS и @emotion/css.

Читать далее
Total votes 4: ↑4 and ↓0 +4
Views 4.2K
Comments 4

Улучшаем производительность: виртуальный рендеринг для больших объемов данных

Конференции Олега Бунина (Онтико) corporate blog Programming *Big Data *Data Engineering *

К вам пришло из API что-то огромное, браузер начал тормозить, а пользователи недовольны? Как с этим справиться? Когда и в каких UI компонентах с проблемой отображения большого массива данных сталкиваются разработчики? Какие специальные подходы применять или не применять?

Меня зовут Сергей Клинов. Я старший frontend-разработчик в компании Datafold. Моя специализация — это TypeScript, React, визуализация данных, формы, повышение производительности. Поговорим о решении проблем, с которыми уже столкнулся, либо в ближайшее время точно столкнется каждый фронтенд-разработчик. Рассмотрим несколько возможных решений, их преимущества и ограничения. Принцип и устройство виртуального рендеринга и разберем рабочий пример его применения на продукте Datafold.

Читать далее
Total votes 6: ↑4 and ↓2 +2
Views 2.4K
Comments 12
1