Тесты производительности различных cache storage

Version 0.4
Ну вот опять!
Передо мной в данный момент стоит задача сравнить популярные бытрые хранилища данных, основанные на использовании оперативной памяти. Найденные сравнения(например, вот это) не совсем подходят, так как необходима информация не только о скорости get/set операций, но и о add/delete (их предполагается использовать для создания мьютексов).
На самом деле целей тестирования две:
- Найти самый быстрый и удобный cache storage, с которым можно взаимодействовать из PHP-шного расширения напрямую, а не через сокеты, как у memcached.
- Оценить разницу в скорости, между хранилищем из пункта 1 и memcached.
Итак в тестировании участвуют:
Идут лесом:
-
MySQL memory (heap) storageSQLite database in memoryMySQL memory (heap) storageMySQL memory (heap) storage и MySQL memory (heap) storage
- eAccelerator. За то, что не умеет работать в cli-режиме.
Тестирование проводилось с помощью немного измененного пакета limb/cache. Этот пакет позволит (я надеюсь
в случае нехватки памяти на application-сервере, легко и непринуждённо (всего одна бессоная ночь) перейти на memcached.
Кто на свете всех быстрее, и румяней, и милее.
В этой номинации сравнивались APC и XCache, как самые известные, и исходя из других моих сексуальных предпочтений: я больше люблю заниматься им с девушками, чем с библиотеками, которые вдруг перестали поддерживаться или начали конфликтовать с другим софтом. В общем APC и XCache я больше доверяю.

Загадочные цифры – это количество совершаемых операций в секунду.
| add | get | set | delete | |
|---|---|---|---|---|
| APC / integer | 111231 | 150792 | 96590 | 154379 |
| XCache / integer | 40342 | 99218 | 56146 | 114956 |
| diff | 176% | 52% | 72% | 34% |
| APC / array | 51547 | 90296 | 42422 | 92647 |
| XCache / array | 23091 | 68078 | 43226 | 84848 |
| diff | 123% | 33% | -2% | 9% |
| APC / object | 20373 | 20743 | 19542 | 122401 |
| XCache / object* | 10598 | 14100 | 15355 | 75741 |
| diff | 92% | 47% | 27% | 62% |
* – В ходе тестирования выяснилось, что XCache не умеет работать с объектами, и их ему приходится отдавать в уже сериализованном виде. Это, конечно решается с помощью собственного драйвера, но “осадок остался” (с).
APC рулит! Поэтому и войдет в PHP6
Выходи memcached – биться будем!

| add | get | set | delete | |
|---|---|---|---|---|
| APC / integer | 111231 | 150792 | 96590 | 154379 |
| Memcached / integer | 6679 | 8436 | 6667 | 9304 |
| diff | 1565% | 1687% | 1349% | 1559% |
| APC / array | 51547 | 90296 | 42422 | 92647 |
| Memcached / array | 6783 | 8319 | 6854 | 9142 |
| diff | 660% | 985% | 519% | 913% |
| APC / object | 20373 | 20743 | 19542 | 122401 |
| Memcached / object | 5088 | 5648 | 5143 | 9081 |
| diff | 300% | 267% | 280% | 1248% |
Выводы делаейте сами, а я спать пойду.
Исходники тестов можно скачать и поправить
Залил новый архив.
архив битый, и можно запаковать без симлинков?
>очень зря eaccelerator не попробовали.
>что значит cli-режим?
CLI- Command Line Interface
Мы не можем без CLI, у нас много offline-скриптов, которые должны работать с кэшом.
очень зря eaccelerator не попробовали.
что значит cli-режим?
Понятно, спасибо за ответ.
На самом деле у этого сравнения было две цели:
1. Выбрать локальный cache storage
2. Узнать насколько выбранный локальный быстрее memcached, чтобы решить, стоит ли делать цепочку кэшей скрипт->локальный кэш->Memcached.
На мой взгляд при таком подходе достаточно было сравнивать xcache + apc
Т.к. memcache все таки используют в роли кэша между серверами. При основной операции get().
Понятно что реализация записи в память будет эффективней записи черзе tcp-ip.