Cet article est issu d’une importation historique.
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 🍝

Image de presentation

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;

Image de presentation

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

Image de presentation

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

Image de presentation

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

Image de presentation

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

Image de presentation

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

Image de presentation

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

Image de presentation

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

Image de presentation

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

Image de presentation

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

Image de presentation

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

Image de presentation

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.