Il fut fait sans correcteur orthographique et grammaticale, il est aussi fort probable que des images et liens soient indisponible.
Des bench, des bench, oui mais des bench xdbug đ
Alors on trouve des Bench PHP partout sur le net, mais de deux choses l’une (ou plus) :
- Ils ne sont pas actualisés
- La version PHP et les infos serveurs ne sont pas indiqués
- Chaque bench en contredit d’autres
- Ils utilisent time() et microtime()(plus rarement), n’utilisent pas les fonctions de math … et presque jamais $_SERVER[‘REQUEST_TIME’]
- Le temps dâexĂ©cution est en variation constante, il est donc logique de faire des rĂ©sultats relatifs (%)
DĂ©butons donc avec ces bench qui sont peut-ĂȘtre complĂ©tement dĂ©biles, mais tester par soi-mĂȘme avec des approches diffĂ©rentes c’est sympa :)
Toutes les sources et images sont disponibles ici : https://git.iglou.eu/adrien/benchmark_php/tree/master
MĂ©thode
J’ai volontairement fait des scripts simples avec beaucoup de rĂ©pĂ©titions, j’ai tentĂ© d’Ă©quilibrer le plus possible entre les entitĂ©s Ă tester.
Pour tester les entités avec XDB et KCG, chaque entité est dans une fonction.
Les loop sont de 100.000 et ils sont externes Ă la fonction de l’entitĂ© testĂ©e, afin de ne pas la prendre en compte dans le rĂ©sultat.
On obtient la moyenne par fonction “TempsPour100.000/100.000” tout simplement⊠TP100k Ă©tant le rĂ©sultat de la dĂ©finissions de main par les fonctions
Infos serveur
- Serveur virtuel utilisé uniquement en teste
- 8Go ram
- 4core 3Ghz
Infos logicielles
- Archlinux kernel 4.2.4
- Apache 2.4.17-2
- XDebug 2.3.3-1
- PHP 5.6.14-1
Infos PHP
- Cache désactivé
- GC activé
- Xdebug seulement le profileur est activé
RĂ©sultats
Parcourir un tableau,
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_arrayLoop.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_arrayLoop.php
k = key; v = value; Pv = pointer to value;
OpĂ©rateurs de comparaison (Ă©gal et n’est pas Ă©gal),
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_comparisonOperators.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_comparisonOperators.php
DĂ©finir un array,
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_deffineArray.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_deffineArray.php
Utilisation de echo,
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_echo.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_echo.php
Utilisation de echo pour plusieurs variables (concat),
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_echo_multiVar.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_echo_multiVar.php
DĂ©finir des variables globales,
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_globalVariables.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_globalVariables.php
Is array ?
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_isArray.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_isArray.php
Afficher une chaine,
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_outputAString.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_outputAString.php
ConcatĂ©nation d’une chaine,
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_stringConcat%C3%A9nation.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_stringConcatenation.php
If ou Switch ?
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_switch.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_switch.php
Unset me,
img : inuit.iglou.eu/adrien/benchmark_php/raw/master/php_unset.png
source : https://git.iglou.eu/adrien/benchmark_php/blob/master/php_unset.php
Pour ce qui est des licences, vu que quand on partage un truc, c’est obligatoire, sinon vous ne pourrez pas rĂ©utiliser quoi que ce soit…
Je conserve la paternitĂ©, c’est obligatoire en France.
Donc pour le code :
/*
* Copyright 2015 Kara adrien
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Pour les images :
Attribution (BY) : Le titulaire des droits autorise toute exploitation de lâĆuvre, y compris Ă des fins commerciales, ainsi que la crĂ©ation dâĆuvres dĂ©rivĂ©es, dont la distribution est Ă©galement autorisĂ©e sans restriction, Ă condition de lâattribuer Ă son lâauteur en citant son nom. Cette licence est recommandĂ©e pour la diffusion et lâutilisation maximale des Ćuvres.
Comme toujours, si vous relevez des erreurs, merci de m’en faire part, ça compte dans mes remises en question quotidiennes =D
Si je fais d’autres bench ils seront ajoutĂ©s ici, peu probable de pondre un autre sujet pour ça. Sauf si les prochains bench sont sous PHP7.
Ă©a, les amis.