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 framework

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

Dépôt d'installation du framework

cd /var/www
git clone https://github.com/phpbenchmarks/symfony.git
cd symfony
git checkout -b symfony_4.0_prepare
# Installez votre framework
composer create-project symfony/skeleton .
composer update

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

git add .
git commit -m "Default installation"
git push origin symfony_4.0_prepare

Dépôt commun

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

Ajout de la dépendance phpbenchmarks/benchmark-rest-data

cd /var/www/symfony
composer require phpbenchmarks/benchmark-rest-data 1.0.0

Lien symbolique entre les 2 dépôts

Pour faciliter l'écriture de code et les commits, on peut créer un lien symbolique entre les 2 projets :
cd /var/www/symfony
composer require symfony-common dev-symfony_4_prepare
rm -rf vendor/phpbenchmarks/symfony-common
ln -s /var/www/symfony/symfony-common vendor/phpbenchmarks/symfony-common
Perf icon

Fonctionnalités pour tous les benchmarks

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

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) :
  • 2 entités Foo et Bar, avec des champs mappés pour MySQL dans l'ORM - Détails
  • Validateurs sur l'entité Foo - Détails
  • 2 clefs de traductions, dans 3 langues (fr_FR, en_GB et en) - Détails
  • 2 listeners sur l'événement phpbenchmarks, dont le callback ne fait rien
  • 2 routes : /benchmark/foo et /benchmark/bar
  • 1 controller, appelé par la 1ère route, avec quelques fonctionnalités - Détails
  • 2 services, qui ne font rien, enregistrés dans le Container (ou équivalent)
  • Si le framework le permet, créer 1 bundle, module, plugin (ou autre nom en fonction de votre framework) qui est enregistré dans le framework mais ne fait rien
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 !