CloudCastle Clock

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

Сравнение с аналогами

Все таблицы ниже сгенерированы автоматически из честных сравнительных тестов (benchmarks/compare.php) на ОДИНАКОВОЙ операции для всех аналогов, PHP 8.3.32, без Xdebug.

1. Функциональность

Возможность🏆 CloudCastlesymfonycarbonlcobuccibesteergebnisnew¹
PSR-20 ClockInterface (now(): DateTimeImmutable)✅✅✅✅✅✅❌
Замороженные часы для детерминизма тестов✅✅✅✅✅✅❌
Мок-часы с виртуальным sleep()✅✅❌❌❌❌❌
Монотонные часы (защита от прыжков системного времени)✅✅❌❌❌❌❌
Смещение времени декоратором (OffsetClock)✅❌❌❌❌❌❌
Масштаб времени декоратором (ScaledClock)✅❌❌❌❌❌❌
Усечение моментов до произвольной единицы✅❌❌❌❌❌❌
Value object длительности с наносекундной точностью✅❌✅❌❌❌❌
Дедлайны с остатком времени (Deadline)✅❌❌❌❌❌❌
Шаговые часы и часы-очередь для сценарных тестов✅❌❌❌❌❌❌
Секундомер с кругами в составе пакета✅❌❌❌❌❌❌
Дешёвые примитивы timestamp()/microtime() без объекта даты✅❌❌❌❌❌❌
Момент от часов приложения (DatePoint)✅✅✅❌❌❌❌
Скоуп-подмена глобальных часов с автовосстановлением✅❌✅❌❌❌❌
Адаптер произвольных PSR-20 часов✅✅❌❌✅❌❌
Календарная арифметика месяцев/лет с контролем переполнения (CalendarDate)✅❌✅❌❌❌❌
Локализованный diffForHumans и isoFormat без ext-intl✅❌❌❌❌❌❌
Календарные предикаты и разницы (isWeekend, diffInDays, next)✅❌✅❌❌❌❌
PHPUnit-трейт подмены времени (mockTime/unmockTime)✅✅❌❌❌❌❌
Реальный sleep() у системных и монотонных часов✅✅❌❌❌❌❌
Обёртка любого объекта с методом now() в PSR-20✅❌❌❌✅❌❌
Итерация календарного периода с шагом (CalendarPeriod)✅❌✅❌❌❌❌
Человекочитаемая длительность (TimeSpan::forHumans)✅❌✅❌❌❌❌
Макросы: расширение API дат без наследования✅❌✅❌❌❌❌
Всего🏆 248102420

2. Безопасность и корректность

Свойство🏆 CloudCastlesymfonycarbonlcobuccibesteergebnisnew¹
Иммутабельные показания (DateTimeImmutable)✅✅✅✅✅✅✅
Явная временная зона (не зависит от date.timezone)✅✅✅✅❌✅❌
Детерминизм тестов без обязательного глобального состояния✅✅❌✅✅✅❌
Монотонность (устойчивость к откату системных часов)✅✅❌❌❌❌❌
Типизированные исключения вместо false/warning на границе ввода✅❌✅❌❌❌❌
Санитайзинг враждебного ввода в сообщениях исключений✅❌❌❌❌❌❌
Контроль целочисленного переполнения длительностей✅❌❌❌❌❌❌
Минимальные зависимости (≤2, без ICU/ext-intl)✅❌❌✅✅✅✅
Всего🏆 8434342

2.1. Соответствие стандартам безопасности composer-пакетов

СтандартCloudCastlesymfonycarbonlcobuccibesteergebnis🏆 Победители
Политика безопасности (SECURITY.md или опубликованный процесс)✅✅✅❌✅✅CloudCastle, symfony, carbon, beste, ergebnis
Контроль известных уязвимостей зависимостей (roave/security-advisories + composer audit)✅❌❌❌❌❌CloudCastle
OpenSSF Scorecard: опубликованная оценка ≥ 7/10❌✅❌❌❌❌symfony
CWE-20: валидация ввода с типизированными исключениями✅❌✅❌❌❌CloudCastle, carbon
CWE-117/CWE-150: нейтрализация управляющих символов в сообщениях об ошибках✅❌❌❌❌❌CloudCastle
CWE-190: контроль целочисленного переполнения✅❌❌❌❌❌CloudCastle
Цепочка поставок: ≤2 runtime-зависимости без polyfill/ICU✅❌❌✅✅✅CloudCastle, lcobucci, beste, ergebnis
OpenSSF Best Practices: автотесты с мутационным контролем в CI✅❌❌✅❌✅CloudCastle, lcobucci, ergebnis
Лицензия OSI в дистрибутиве (MIT)✅✅✅✅✅✅CloudCastle, symfony, carbon, lcobucci, beste, ergebnis
Всего🏆 833334CloudCastle

<sub>Источники: файлы SECURITY.md в репозиториях (API GitHub), require-dev дистрибутивов на Packagist, api.securityscorecards.dev (symfony/clock — оценка монорепозитория symfony/symfony; OpenSSF Scorecard оценивает только проекты на GitHub, поэтому у CloudCastle на GitVerse оценки нет — честный минус площадки); строки CWE — по тестам безопасности пакетов; symfony/clock для PHP 8.1 — ветка 6.4 с polyfill-php83.</sub>

3. Производительность: now()

_Получение текущего момента now(), 200 000 раз (минимум из 15)._

РешениеВремя (мс)Итог
new¹109,7базовый уровень (не библиотека)
🏆 CloudCastle114,5быстрейшее среди библиотек
🏆 ergebnis115,6наравне с лидером (в пределах погрешности)
🏆 lcobucci116наравне с лидером (в пределах погрешности)
🏆 beste116,8наравне с лидером (в пределах погрешности)
symfony154,6аналог
carbon649,8аналог

4. Производительность: unix-метка

_Текущая unix-метка (целые секунды), 200 000 раз._

РешениеВремя (мс)Итог
new¹16базовый уровень (не библиотека)
🏆 CloudCastle27,8быстрейшее среди библиотек
ergebnis122,3аналог
lcobucci123аналог
beste125,6аналог
symfony164,2аналог
carbon658,7аналог

5. Потребление памяти библиотекой

_Прирост памяти самой библиотеки на 200 000 вызовов now() (изолированный процесс, без веса автолоадера)._

РешениеПамять (KB)Итог
new¹1базовый уровень (не библиотека)
🏆 beste3легчайшее среди библиотек
lcobucci5аналог
ergebnis5аналог
symfony30аналог
CloudCastle31аналог
carbon3 425аналог

6. Утечки памяти

_Рост памяти после прогрева за 200 000 вызовов now() (0 — утечек нет)._

РешениеПамять (KB)Итог
🏆 CloudCastle0без утечек
symfony0без утечек
carbon0без утечек
lcobucci0без утечек
beste0без утечек
ergebnis0без утечек
new¹0базовый уровень (не библиотека)

7. Пик памяти процесса

_Пик памяти изолированного процесса на 200 000 вызовов now()._

РешениеПамять (KB)Итог
🏆 CloudCastle7 035легчайшее среди библиотек
🏆 symfony7 035наравне с лидером (в пределах погрешности)
🏆 lcobucci7 035наравне с лидером (в пределах погрешности)
🏆 beste7 035наравне с лидером (в пределах погрешности)
🏆 ergebnis7 035наравне с лидером (в пределах погрешности)
new¹7 035базовый уровень (не библиотека)
carbon10 303аналог

8. Качество кода

Инструмент🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
PHPStan✅ max + strict❌✅✅ + strict✅ + strict✅ + strict
Psalm✅ level 1✅ (monorepo)❌❌✅❌
PHPMD✅❌✅❌❌❌
PHPCS / CS-Fixer✅ PSR-12 + fixer✅ fixer✅✅❌✅ fixer
Rector✅❌❌❌❌✅
Deptrac (слои архитектуры)✅❌❌❌❌❌
Мутационное тестирование (Infection)✅ MSI 100.0%❌❌✅❌✅
Покрытие строк (живое)✅ 100.0%—————
Всего🏆 823324

<sub>Инструменты аналогов — по require-dev их опубликованных дистрибутивов (снапшот июль 2026); symfony/clock — по монорепозиторию symfony/symfony. Метрики CloudCastle — живые результаты локального прогона.</sub>

¹ Базовый уровень (нативные вызовы/примитивы без полноты решения) показан для контекста и не претендует на победу среди библиотек-аналогов.

Результаты, отличающиеся от лучшего менее чем на 5%, отмечены как равные: у этих решений горячий путь совпадает посимвольно (new DateTimeImmutable('now', $tz)), и на таком масштабе разницу определяет шум машины, а не код.


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano