Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія | |||
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. При засовывании в кэш больших объемов данных, |