/
cloud-castle
/
memcached
Обзор
Документация
Войти
/
cloud-castle
/
memcached
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
9
CI/CD
Аналитика
main
benchmarks/assert-memory.php
55 строк
2 KB
Алексей Зорин
refactor: магические числа вынесены в приватные константы
27 июл 2026, 23:46
27 июл 2026, 23:46
743ec9c
Код
Авторство
О чём код?
<?php declare(strict_types=1); /** * Проверка потребления памяти самой библиотекой. * * Baseline снимается до создания клиента, поэтому из результата исключены * PHP, автолоадер и сам скрипт: измеряется цена библиотеки, а не процесса. * * @internal инструмент разработки */ require __DIR__ . '/../vendor/autoload.php'; use CloudCastle\Memcached\Client; use CloudCastle\Memcached\Configuration\Config; use CloudCastle\Memcached\Configuration\Protocol; use CloudCastle\Memcached\Configuration\Server; use CloudCastle\Memcached\Configuration\Topology; use CloudCastle\Memcached\Testing\InMemoryConnectionFactory; gc_collect_cycles(); if (\function_exists('memory_reset_peak_usage')) { memory_reset_peak_usage(); } $baseline = memory_get_usage(false); $client = new Client( new Config([new Server('memory', 0)], topology: new Topology(Protocol::Text)), null, new InMemoryConnectionFactory(), ); for ($i = 0; $i < 20000; $i++) { $client->set('key', ['value' => $i]); $client->get('key'); } $used = (\function_exists('memory_reset_peak_usage') ? memory_get_peak_usage(false) : memory_get_usage(false)) - $baseline; $kilobytes = max(0, (int) round($used / 1024)); printf("Память самой библиотеки на 40 000 операций: %d KB\n", $kilobytes); if ($kilobytes > 4096) { fwrite(STDERR, "Потребление памяти превысило порог в 4 MB.\n"); exit(1); } echo "Потребление памяти в пределах порога.\n";