CloudCastle Clock

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

Comparaison avec les concurrents

Tous les tableaux ci-dessous sont générés automatiquement à partir de tests comparatifs honnêtes (benchmarks/compare.php) exécutant la MÊME opération pour chaque concurrent, PHP 8.3.32, sans Xdebug.

1. Fonctionnalités

Capacité🏆 CloudCastlesymfonycarbonlcobuccibesteergebnisnew¹
PSR-20 ClockInterface (now(): DateTimeImmutable)✅✅✅✅✅✅❌
Horloge figée pour des tests déterministes✅✅✅✅✅✅❌
Horloge simulée avec sleep() virtuel✅✅❌❌❌❌❌
Horloge monotone (insensible aux sauts de l’heure système)✅✅❌❌❌❌❌
Décalage temporel par décorateur (OffsetClock)✅❌❌❌❌❌❌
Mise à l’échelle du temps par décorateur (ScaledClock)✅❌❌❌❌❌❌
Troncature des instants à une unité arbitraire✅❌❌❌❌❌❌
Objet-valeur de durée avec précision à la nanoseconde✅❌✅❌❌❌❌
Échéances avec temps restant (Deadline)✅❌❌❌❌❌❌
Horloges à pas et à file d’attente pour tests de scénario✅❌❌❌❌❌❌
Chronomètre avec tours inclus dans le paquet✅❌❌❌❌❌❌
Primitives timestamp()/microtime() économiques sans objets date✅❌❌❌❌❌❌
Instant lié à l’horloge de l’application (DatePoint)✅✅✅❌❌❌❌
Substitution à portée limitée de l’horloge globale avec restauration automatique✅❌✅❌❌❌❌
Adaptateur pour toute horloge PSR-20✅✅❌❌✅❌❌
Arithmétique calendaire des mois/années avec contrôle de dépassement (CalendarDate)✅❌✅❌❌❌❌
diffForHumans et isoFormat localisés sans ext-intl✅❌❌❌❌❌❌
Prédicats et différences calendaires (isWeekend, diffInDays, next)✅❌✅❌❌❌❌
Trait PHPUnit pour simuler le temps (mockTime/unmockTime)✅✅❌❌❌❌❌
sleep() réel sur les horloges système et monotones✅✅❌❌❌❌❌
Encapsulation de tout objet doté de now() en PSR-20✅❌❌❌✅❌❌
Itération d’une période calendaire avec un pas (CalendarPeriod)✅❌✅❌❌❌❌
Durée lisible par l’humain (TimeSpan::forHumans)✅❌✅❌❌❌❌
Macros : extension de l’API des dates sans héritage✅❌✅❌❌❌❌
Total🏆 248102420

2. Sécurité et exactitude

Propriété🏆 CloudCastlesymfonycarbonlcobuccibesteergebnisnew¹
Lectures immuables (DateTimeImmutable)✅✅✅✅✅✅✅
Fuseau horaire explicite (indépendant de date.timezone)✅✅✅✅❌✅❌
Déterminisme des tests sans état global obligatoire✅✅❌✅✅✅❌
Monotonie (résistante au recul de l’horloge système)✅✅❌❌❌❌❌
Exceptions typées au lieu de false/warning à la frontière d’entrée✅❌✅❌❌❌❌
Assainissement des entrées hostiles dans les messages d’exception✅❌❌❌❌❌❌
Contrôle du dépassement d’entier pour les durées✅❌❌❌❌❌❌
Dépendances minimales (≤2, sans ICU/ext-intl)✅❌❌✅✅✅✅
Total🏆 8434342

2.1. Conformité aux normes de sécurité des paquets Composer

NormeCloudCastlesymfonycarbonlcobuccibesteergebnis🏆 Gagnants
Politique de sécurité (SECURITY.md ou processus publié)✅✅✅❌✅✅CloudCastle, symfony, carbon, beste, ergebnis
Contrôle des vulnérabilités connues des dépendances (roave/security-advisories + composer audit)✅❌❌❌❌❌CloudCastle
OpenSSF Scorecard : score publié ≥ 7/10❌✅❌❌❌❌symfony
CWE-20 : validation des entrées avec exceptions typées✅❌✅❌❌❌CloudCastle, carbon
CWE-117/CWE-150 : neutralisation des caractères de contrôle dans les messages d’erreur✅❌❌❌❌❌CloudCastle
CWE-190 : contrôle du dépassement d’entier✅❌❌❌❌❌CloudCastle
Chaîne d’approvisionnement : ≤2 dépendances d’exécution sans polyfill/ICU✅❌❌✅✅✅CloudCastle, lcobucci, beste, ergebnis
OpenSSF Best Practices : tests automatisés avec contrôle par mutation en CI✅❌❌✅❌✅CloudCastle, lcobucci, ergebnis
Licence approuvée OSI dans la distribution (MIT)✅✅✅✅✅✅CloudCastle, symfony, carbon, lcobucci, beste, ergebnis
Total🏆 833334CloudCastle

<sub>Sources : fichiers SECURITY.md des dépôts (API GitHub), require-dev des distributions sur Packagist, api.securityscorecards.dev (symfony/clock — score du monorepo symfony/symfony ; OpenSSF Scorecard n’évalue que les projets GitHub, CloudCastle sur GitVerse n’a donc pas de score — un moins honnête lié à la plateforme) ; lignes CWE — d’après les tests de sécurité des paquets ; symfony/clock pour PHP 8.1 est la branche 6.4 avec polyfill-php83.</sub>

3. Performance : now()

_Obtention de l’instant courant now(), 200 000 fois (minimum de 15)._

SolutionTemps (ms)Verdict
new¹109,7référence (pas une bibliothèque)
🏆 CloudCastle114,5la plus rapide des bibliothèques
🏆 ergebnis115,6à égalité avec le meilleur (dans la marge d’erreur)
🏆 lcobucci116à égalité avec le meilleur (dans la marge d’erreur)
🏆 beste116,8à égalité avec le meilleur (dans la marge d’erreur)
symfony154,6concurrent
carbon649,8concurrent

4. Performance : horodatage unix

_Horodatage unix courant (secondes entières), 200 000 fois._

SolutionTemps (ms)Verdict
new¹16référence (pas une bibliothèque)
🏆 CloudCastle27,8la plus rapide des bibliothèques
ergebnis122,3concurrent
lcobucci123concurrent
beste125,6concurrent
symfony164,2concurrent
carbon658,7concurrent

5. Consommation mémoire de la bibliothèque

_Croissance mémoire de la seule bibliothèque sur 200 000 appels now() (processus isolé, sans le poids de l’autoloader)._

SolutionMémoire (KB)Verdict
new¹1référence (pas une bibliothèque)
🏆 beste3la plus légère des bibliothèques
lcobucci5concurrent
ergebnis5concurrent
symfony30concurrent
CloudCastle31concurrent
carbon3 425concurrent

6. Fuites mémoire

_Croissance mémoire après préchauffage sur 200 000 appels now() (0 — aucune fuite)._

SolutionMémoire (KB)Verdict
🏆 CloudCastle0sans fuites
symfony0sans fuites
carbon0sans fuites
lcobucci0sans fuites
beste0sans fuites
ergebnis0sans fuites
new¹0référence (pas une bibliothèque)

7. Pic mémoire du processus

_Pic mémoire d’un processus isolé sur 200 000 appels now()._

SolutionMémoire (KB)Verdict
🏆 CloudCastle7 035la plus légère des bibliothèques
🏆 symfony7 035à égalité avec le meilleur (dans la marge d’erreur)
🏆 lcobucci7 035à égalité avec le meilleur (dans la marge d’erreur)
🏆 beste7 035à égalité avec le meilleur (dans la marge d’erreur)
🏆 ergebnis7 035à égalité avec le meilleur (dans la marge d’erreur)
new¹7 035référence (pas une bibliothèque)
carbon10 303concurrent

8. Qualité du code

Outil🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
PHPStan✅ max + strict❌✅✅ + strict✅ + strict✅ + strict
Psalm✅ level 1✅ (monorepo)❌❌✅❌
PHPMD✅❌✅❌❌❌
PHPCS / CS-Fixer✅ PSR-12 + fixer✅ fixer✅✅❌✅ fixer
Rector✅❌❌❌❌✅
Deptrac (couches d’architecture)✅❌❌❌❌❌
Tests de mutation (Infection)✅ MSI 100.0%❌❌✅❌✅
Couverture de lignes (en direct)✅ 100.0%—————
Total🏆 823324

<sub>Outils des concurrents selon le require-dev de leurs distributions publiées (instantané juillet 2026) ; symfony/clock — selon le monorepo symfony/symfony. Les métriques CloudCastle sont des résultats réels d’exécution locale.</sub>

¹ La référence (appels natifs sans la complétude d’une solution) est donnée pour contexte et ne concourt pas avec les bibliothèques.

Les résultats à moins de 5% du meilleur sont marqués comme égaux : ces solutions partagent un chemin chaud identique caractère pour caractère (new DateTimeImmutable('now', $tz)) ; à cette échelle, l’écart vient du bruit de la machine, pas du code.


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