Perf icon

Le code source

Le code source de tous les benchmarks est disponible sur github.com/phpbenchmarks.

Le code de chaque outil benchmarké est divisé en 2 dépôts.
Exemple avec Twig :
  • phpbenchmarks/twig : installation de Twig, sans le code du benchmark.
    • Une branche par version mineure de Twig, et par benchmark. Exemple : twig_2.4_hello-world.
    • Contient init_benchmark.sh, avec une fonction init() qui permet d'initialiser le benchmark : composer install, suppression des caches etc.
    • Dépendances vers la version de Twig benchmarkée (majeure et mineure forcées, par exemple 2.4.*) et phpbenchmark/twig-common.
  • phpbenchmarks/twig-common : code du benchmark.
    • Le code source final du benchmark doit être compatible avec toutes les versions mineures d'une version majeure. Exemple : 2.*.
    • Une branche par version majeure et par benchmark. Exemple : twig_2_hello-world.
    • La gestion des versions est expliquée dans le README.md.
Perf icon

Installation du moteur de template

Demandez-nous de créer les 2 dépôts GitHub du moteur de template que vous voulez ajouter.
Une fois les dépôts créés, clonez-les, créez vos branches et installez le moteur de template (Plates 3.3 dans l'exemple ci-dessous).

Dépôt d'installation du moteur de template

cd /var/www
git clone https://github.com/phpbenchmarks/plates.git
cd plates
git checkout -b plates_3.3_prepare
# Installez votre moteur de template
composer require league/plates:3.3.*
composer update

Créer un premier commit avec l'installation par défaut

git add .
git commit -m "Default installation"
git push origin plates_3.3_prepare

Dépôt commun

cd /var/www
git clone https://github.com/phpbenchmarks/plates-common.git
cd plates-common
git checkout -b plates_3_prepare
touch README.md
git add README.md
git commit -m "Create branch"
git push origin plates_3_prepare
Perf icon

Fonctionnalités pour tous les benchmarks

Tout le code doit être dans le projet plates-common, le projet plates ne doit contenir que l'installation et la configuration (envrionnement de prod) du moteur de template.

Pour pouvoir créer les différents benchmarks, vous devez ajouter ces fonctionnalités (ou une partie, en précisant ce que vous n'avez pas pu implémenter) :
  • Créer un layout layout.html, qui sera utilisé par le template overload.html
  • 2 fonctions, qui font echo 'PHP Benchmarks', dans un fichier externe et les appeler
  • 2 macros, qui font echo 'PHP Benchmarks', dans un fichier externe et les appeler
  • 2 échappements d'une string pour de l'HTML
  • 2 échappements d'une string pour du JS
  • 2 assignations de variable (le texte doit contenir de l'HTML) et les afficher sans que l'HTML contenu soit échappé
  • 2 affichages de variables inconnues (ne doit pas lever d'exception)
  • Créer une classe OverloadObject, passer une instance au template overload.html et afficher le retour de la méthode phpBenchmarks() sur cet objet, qui retourne PHP Benchmarks
  • 2 inclusions de templates, en leur passant une variable qu'ils affichent
  • 2 blocks dans layout.html, surchagés dans overload.html et qui affichent PHP Benchmarks
Perf icon

That's all folks !

Envoyez tout ça sur GitHub, et prévenez-nous via le formulaire de contact.

PHP benchmarks apprécie toutes les participations, même si vous n'implémentez pas toutes les fonctionnalités !