Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версій Попередня ревізія | |||
|
labs [2023/06/16 10:07] nightfly знищено |
— (поточний) | ||
|---|---|---|---|
| Рядок 1: | Рядок 1: | ||
| - | ====== Бенчмарки и всякое такое ====== | ||
| - | ===== parse_ini_string() vs json_decode() vs unserialize() performance ===== | ||
| - | Ясно, что в реальном мире данные для парсинга, | ||
| - | |||
| - | <code php> | ||
| - | /* parse_ini | ||
| - | $data=" | ||
| - | for($i=0; | ||
| - | $tmp=parse_ini_string($data); | ||
| - | } | ||
| - | |||
| - | // 18.33s | ||
| - | |||
| - | /* json data decoding */ | ||
| - | $data=' | ||
| - | for($i=0; | ||
| - | $tmp=json_decode($data); | ||
| - | } | ||
| - | |||
| - | // 20.43s | ||
| - | |||
| - | /* native PHP unserialize */ | ||
| - | $data=' | ||
| - | for($i=0; | ||
| - | $tmp=unserialize($data); | ||
| - | } | ||
| - | |||
| - | // 11.36s | ||
| - | |||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | Итого делаем несложный вывод - json_decode таки самый медленный из этой троицы, | ||
| - | |||
| - | ===== UbillingCache files vs memcached vs redis ===== | ||
| - | Тестовый код: | ||
| - | |||
| - | <code php> | ||
| - | set_time_limit(0); | ||
| - | $cache = new UbillingCache(); | ||
| - | $cacheTime = 3600; | ||
| - | $iterations = 10000; | ||
| - | $testData = file_get_contents(' | ||
| - | //testing cache set time | ||
| - | $testStartTime = time(); | ||
| - | for ($i = 0; $i <= $iterations; | ||
| - | $cache-> | ||
| - | } | ||
| - | $testEndTime = time(); | ||
| - | $testResult = $testEndTime - $testStartTime; | ||
| - | $summary = __(' | ||
| - | |||
| - | //testing cache get time | ||
| - | $testStartTime = time(); | ||
| - | for ($i = 0; $i <= $iterations; | ||
| - | $fromCache = $cache-> | ||
| - | } | ||
| - | $testEndTime = time(); | ||
| - | $testResult = $testEndTime - $testStartTime; | ||
| - | $summary.=__(' | ||
| - | $summary.=__(' | ||
| - | |||
| - | show_window(__(' | ||
| - | </ | ||
| - | |||
| - | Результаты для files: | ||
| - | |||
| - | Cache set results: 11 сек. | ||
| - | Cache get results: 2 сек. | ||
| - | Data transfered: 187.43 Mb | ||
| - | |||
| - | | ||
| - | Результаты для memcached: | ||
| - | |||
| - | Cache set results: 2 сек. | ||
| - | Cache get results: 2 сек. | ||
| - | Data transfered: 187.43 Mb | ||
| - | | ||
| - | |||
| - | Результаты для redis: | ||
| - | Cache set results: 4 сек. | ||
| - | Cache get results: 3 сек. | ||
| - | Data transfered: 187.43 Mb | ||
| - | |||
| - | Итого наблюдаем, | ||
| - | <code php> | ||
| - | $testData = file_get_contents(' | ||
| - | </ | ||
| - | А вот что.\\ | ||
| - | |||
| - | Результаты для files: | ||
| - | |||
| - | Cache set results: 31 сек. | ||
| - | Cache get results: 27 сек. | ||
| - | Data transfered: 1.13 Gb | ||
| - | |||
| - | | ||
| - | Результаты для memcached: | ||
| - | |||
| - | Cache set results: 61 сек. | ||
| - | Cache get results: 1 сек. | ||
| - | Data transfered: 1.13 Gb | ||
| - | |||
| - | Результаты для redis: | ||
| - | Cache set results: 11 сек. | ||
| - | Cache get results: 5 сек. | ||
| - | Data transfered: 1.13 Gb | ||
| - | |||
| - | Итого резюмируя - у memcached всегда быстрее время чтения данных из кэша, но медленнее на операциях set. При засовывании в кэш больших объемов данных, | ||