Just another WordPress weblog
More performance in PHP, Code Crappier !
8/03/10
En me penchant un peu sur les performances que l’on peut obtenir en PHP, je suis tombé sur cet article ( en anglais) fort intéressant. Il propose de comparer les différentes performances obtenu sur 2 tests à l’aide à chaque fois de 3 différents codes réalisant la même chose mais l’un utilisant de la programmation orientée objet et un autre utilisant une fonction. Les résultats sont assez explicites cependant l’article n’indique pas quelle version de php est utilisée et un » copyright 2003 » en bas de page ne laisse rien présager de bon. J’ai donc décidé de reexecuter les tests avec le moteur PHP 5.3:
J’ai simplement réutilisé les codes sources proposés:
Test #1:
| OOP | Function | Neither |
| class test | function one() | for ($i=0; $i<1000000; $i++) |
| { | { | { |
| function one() { | return 1; | $cnt+=1; |
| return 1; | } | } |
| } | for ($i=0; $i<1000000; $i++) | |
| { | ||
| } | ||
| $cnt+=one(); | ||
| for ($i=0; $i<1000000; $i++) | ||
| { | } | |
| $testclass=new test(); | ||
| $cnt+=$testclass->one(); | ||
| } |
La machine utilisée pour le test est un core 2 duo T5550 avec 2 Go de mémoire vive.
| Test #1: | OOP | Fonction | Neither |
| 1 | 7,788 | 5,168 | 0,317 |
| 2 | 7,542 | 5,085 | 0,315 |
| 3 | 7,528 | 5,172 | 0,316 |
| 4 | 7,694 | 5,034 | 0,318 |
| 5 | 7,518 | 5,009 | 0,316 |
| 6 | 7,560 | 5,163 | 0,315 |
| 7 | 7,692 | 4,955 | 0,313 |
| 8 | 7,537 | 4,969 | 0,313 |
| 9 | 7,518 | 5,006 | 0,319 |
| 10 | 7,565 | 4,948 | 0,315 |
| Moyenne | 7,594 | 5,051 | 0,316 |
Les résultats de premier test sont très proche de ceux de l’article originel. On peut voir que le code PHP Objet met en moyenne 2,5 secondes de plus que la simple fonction pour s’exécuter. En fait ils sont même pire que sur l’article originel. On peut objecter que ma machine est moins performante puisqu’elle ne tourne qu’à 1,66 GHz.
Cependant le delta entre le code OOP et la fonction s’est réduit, ce qui semble montrer que le temps d’exécution d’une fonction a augmenté sur les dernières versions de PHP.
Test #2:
| OOP | Function | Neither |
| class test | function one() | for ($i=0; $i<100000; $i++) |
| { | { | { |
| function one() | return 1; | $cnt+=1; |
| { | $cnt+=1; | |
| } | $cnt+=1; | |
| return 1; | $cnt+=1; | |
| for ($i=0; $i<100000; $i++) | $cnt+=1; | |
| } | { | $cnt+=1; |
| $cnt+=1; | ||
| } | $cnt+=one(); | $cnt+=1; |
| $cnt+=one(); | $cnt+=1; | |
| for ($i=0; $i<100000; $i++) | $cnt+=one(); | $cnt+=1; |
| { | $cnt+=one(); | |
| $cnt+=one(); | } | |
| $testclass=new test(); | $cnt+=one(); | |
| $cnt+=$testclass->one(); | $cnt+=one(); | |
| $cnt+=$testclass->one(); | $cnt+=one(); | |
| $cnt+=$testclass->one(); | $cnt+=one(); | |
| $cnt+=$testclass->one(); | $cnt+=one(); | |
| $cnt+=$testclass->one(); | ||
| $cnt+=$testclass->one(); | } | |
| $cnt+=$testclass->one(); | ||
| $cnt+=$testclass->one(); | ||
| $cnt+=$testclass->one(); | ||
| $cnt+=$testclass->one(); | ||
| } |
Comme l’indique l’article source, la principale différence de ce second test est de chercher à simuler l’exécution d’une dizaine de fonction en même temps plutôt qu’une seule. Normalement le code orienté objet doit mieux s’en sortir puisque la classe n’a besoin d’être initialisée qu’une fois pour tout les appels plutôt qu’une fois par appel comme dans le premier exemple:
| Test #2: | OOP | Function | Neither |
| 1 | 5,7443 | 4,7801 | 0,0948 |
| 2 | 5,6938 | 4,7601 | 0,0959 |
| 3 | 5,7112 | 4,9380 | 0,0942 |
| 4 | 5,8177 | 4,7591 | 0,0937 |
| 5 | 5,7281 | 4,9040 | 0,0934 |
| 5 | 5,8531 | 4,7233 | 0,0955 |
| 6 | 5,6975 | 4,7585 | 0,0952 |
| 7 | 5,6994 | 4,8630 | 0,0954 |
| 8 | 6,3116 | 5,3563 | 0,0967 |
| 9 | 5,6867 | 4,8563 | 0,0952 |
| Moyenne | 5,7943 | 4,8699 | 0,0950 |
Et effectivement on peut voir ici que le code OOP s’en sort mieux le delta est ici en moyenne de légèrement moins d’une seconde avec la fonction. En revanche encore une fois les résultats sont terriblement moins bon que sur les anciens tests. Là ou sur l’article originel le code OOP était 200% plus rapide, il ne l’est que 130% ici.
Et si PHP a amélioré ses performances ce ne semble pas être sur l’exécution des fonctions qui s’exécutaient quand même 2,5 fois plus vite avant entre le test1 et le test2 pour seulement 2 fois plus vite ici.
Par contre, l’exécution en dehors d’une fonction a explosé ! 400% plus rapide que sur les anciens tests !
Qu’en conclure ?
Certainement pas qu’il faut se passer de POO et de structures fonctionnelles, mais peut être en revanche d’éviter d’utiliser ces fonctions à l’excès et peut-être les éviter dans les rares cas ou l’on a besoin de performance et ou on peut se le permettre. On peut aussi dans ce cas se tourner vers quelque chose comme hiphop-php , xcache , eaccelerator ou même carrément witty. Egalement pour améliorer les performances de vos scripts je vous invite à consulter le site fort intéressant: http://www.phpbench.com
Ce qui est sur c’est que PHP à encore des progrès à faire quand à la gestion de la POO.
Mexico #2
29/01/10
Samedi 23 Janvier:
6h45 descente de la chambre pour le dernier petit-déjeuner français.
En l’occurrence, le seul truc qui est vraiment valable au niveau petit-déjeuner ce sont les croissants.
Arrivé au terminal, après un peu de patience mon tour arrive.
Une personne de la sécurité s’approche alors de moi et commence à me poser quelques questions en anglais.
En fait l’entretien se prolonge plus de dix minutes et le mec ne rigole pas du tout, ce qui n’est pas étonnant vu que j’ai une correspondance par les États-Unis. L’agent prend mes documents dont le certificat de l’université et mes billets pour parler avec l’un de ses collègues.
Le mec semble à peine y croire, un jeune partant faire un mini tour du monde avec 2 petits sacs. Ne connaissant personne à Mexico, New York, Tokyo ou Delhi. Et n’ayant aucune adresse à donner pour l’une de ces destinations.
Apres, les habituelles questions types « êtes-vous terroriste ? » et êtes-vous la seule personne à avoir fait vos bagages. IL me demande:
- »Can you tell me how much cash you’ve got with you »
- »Hm.. about 70 € I think.. and also some forints from a past trip »
- »Ah yes, forints. Do you speak Magyar?
- »Not really, do you?
- »No I was just curious…you can’t really do anything with that »
Il conclut en m’expliquant:
« Sorry for all these questions but I had to understand the whole. It doesn’t seem to be a lot of baggage for 7 month. »
Je prends ma carte d’embarquement la nana m’explique que mon bagage suivra directement à Mexico, pas intérêt de rater ma correspondance donc. En tout cas j’en ai un mauvais pressentiment.
J’arrive dans l’avion, Départ à l’heure à 9h25. En quasiment 30 minutes on est au dessus de Dublin, impressionnant. Nous sommes à 9500 mètres au dessus du sol, j’ai l’impression (surement erronée) de n’avoir jamais été à une telle hauteur lors de mes précédents vols.
Les fameux écrans de contrôle permettent de savoir n’importe quand la position de l’avion par rapport à notre itinéraire.
14h, nous sommes en passe d’atteindre la cote canadienne. « Goose Bay ». Nous volons à 864 km/h. Par le hublot je ne vois plus que des nuages. Je n’irais pas faire un tour la dehors, l’écran annonce -51°. Nous disposons d’écran en face de chaque siège pour parer à l’ennui mais il ne s’agit pas de VOD ou de films récents. Ils proposent en fait différentes chaines avec des téléfilms ou séries diffusés en boucle. Il y a également quelques jeux qui eux ne feraient pas pâlir une Gameboy de première génération.
14h30 terre en vue, ou plutôt pics de glace dépassant de nuages en vue. C’est magnifique. Il y a plein de petites criques, de lacs gelés et de relief faisant penser à un paysage islandais. Aucuns signes de vie là en bas, du moins aucuns perceptibles.
Nous arrivons à Houston, Texas aéroport « G Bush International » : la non plus ca ne rigole pas, prise d’empruntes des 5 doigts de chaque main + photographie.
Changement d’avion pour celui allant à Mexico City:
Dans celui-là je rencontre 2 américaines qui vont également étudier à Cuernavaca. Elizabeth
de Nebraska, Minnesota et Rachel de Chicago , Illinois. Comme moi elles se demandent ce qu’a bien pu faire le président G Bush père pour mériter d’avoir un aéroport à son nom au même titre que Kennedy. Un van de leur école vient les chercher directement à Mexico nous ne pouvons donc pas faire la route ensemble, nous en profitons pour échanger nos mails.
Nous arrivons à Mexico City, il est environ 15h, la bonne nouvelle c’est que je ne vois pas ma valise dans le tas.
C’est l’occasion de commencer a pratiquer l’espagnol avec les gens de Continentales-Airlines.
D’après le bonhomme ma valise n’a pas été scanné à Houston ce qui signifie concrètement qu’elle y est toujours…Il m’explique qu’il faut attendre les prochains vols en partance de Houston:
il y en a un qui arrive à 20h30 et un autre à 23h30 mais il est incapable de me dire si ma valise sera dans le premier..
J’essaye de faire changer mes forints hongrois, ici on ne jure que par l’euro, le dollar américain, ou le yen. On m’explique que je peux normalement le faire au terminal 1 qui est plus grand.
Après avoir discuté avec quelques Mexicain(e)s, je peux confirmer ce que j’ai lu. Il est nettement préférable de commencer une conversation en espagnol quitte à butter sur quelques mots ou à passer à l’anglais après…ça évite d’être perçu comme un américain et permet d’obtenir plus facilement un sourire surtout de la part des femmes.
Pour me rendre à l’autre terminal, il faut utiliser l’aérotrain comme son nom l’indique un train aérien, c’est rapide et ça me permet d’avoir un premier aperçu de la ville.
Le terminal 1 est en effet beaucoup plus grand et il y a des boutiques sur toute la longueur.
Commence un challenge pour trouver celle qui acceptera mes forints hongrois, l’aéroport ne manque pas de bureaux de change et après avoir fait une bonne partie de sa longueur j’arrive finalement à trouver mon bonheur.
Mon portable ne s’est pas connecté au réseau mexicain donc j’en profite pour acheter aussi une carte de téléphone.
Malgré ce que j’avais imaginé je commence à accuser le coup du décalage horaire, je ne tiens plus debout. Je m’arrête dans un café de l’aéroport pour me reposer un peu et utiliser le wifi et ainsi prévenir les personnes devant me faire visiter des appartements, que je suis bloqué à l’aéroport.
Je vois que le chargeur de mon notebook peut recevoir du 110 volts sans soucis mais les adaptateurs pour les prises sont dans la valise située entre Houston et Mexico…
Il est quasiment 20h30 je retourne au terminal 2 tel un zombie pour prendre des nouvelles de ma valise.
La valise n’est toujours pas la..à bout de force je prend l’hôtel le plus proche.. Une voiture vient me chercher directement à l’aéroport pour me conduire. Il s’agit en fait d’un hôtel 4 étoiles. J’en ai pour 600 pesos (30 euros) presque 3 fois moins que le B&B a coté de Roissy. La chambre dispose d’un lit 2 places et est en plus, plus grande tout comme la salle de bain.
Mexico #1
23/01/10
Debut de mon « périple »,
Apres un peu de stress partagé par ‘une bonne partie de la famille et quelques amis me voila sur la route avec toutes mes affaires (du moins ce que je pense pour l’instant).
Après les 1h30 de train, suivi par quelques stations de métro puis le rer B puis la navette puis le taxi, me voila à l’hotel dans l’attente de mon décollage de demain.
Je ne sais pas encore quel va être mon point de chute arrivé sur place, ce qui promet d’être folklo…
La suite demain à 9h30, reste plus qu’a se reveiller.
social proof – Comment les réseaux sociaux modifient la societé ?
24/12/09
is twitter the new radio ?
http://ow.ly/E8Xt
New Twitter Research: Men Follow Men and Nobody Tweets
http://blogs.harvardbusiness.org/cs/2009/06/new_twitter_research_men_follo.html
study-males-vs-females-in-social-networks
http://royal.pingdom.com/2009/11/27/study-males-vs-females-in-social-networks/
Children who use technology are ‘better writers’
http://news.bbc.co.uk/2/hi/technology/8392653.stm
Les journalistes et Twitter
http://nicolasgosset.wordpress.com/2009/01/26/les-journalistes-et-twitter-partie-12-tentative-de-categorisation/
Twitter est-il un bon outil de promotion pour les livres ?
http://www.actualitte.com/actualite/15432-twitter-promotion-livre-experience-vroman.htm
Facebook mesure le bonheur national
http://www.generation-nt.com/facebook-bonheur-indice-echelle-gnh-actualite-884471.html
Les réseaux sociaux rendraient plus intelligent ?
« Social networking. According to a study reported in Discover Magazine, social interaction boosts synaptic activity, then sleep helps eliminate any unnecessary synapses, thereby boosting the positive ones. Granted, this study was done on fruit flies, but the idea is that by interacting socially, humans are creating more synapses, therefore increasing brain power. »
Happiness in Denmark
26/11/09
Une université Anglaise à réalisé récemment une étude sur le bonheur permettant d’obtenir la carte mondiale du bonheur :

(pays les plus heureux en rouge)
Apparement la liste des pays les plus heureux serait la suivante :
1.Denmark
2.Finland
3.Ireland
4.Sweden
5.Netherlands
La chaine Arte a réalisé un reportage à ce sujet pour savoir ce qu’etait ce « bonheur » Danois.
Peut-être que ces gens la savent bien se contenter de ce qu’ils ont:
Sur yahoo answers à la question « Les choses que l’on possèdent finissent t-elles par nous posséder ?«
on trouve comme réponse : « Au début, on achète des choses parce qu’elles nous plaisent ou que l’on estime en avoir besoin : on possède ces objets.
Puis au fil du temps, on s’attache à ces objets qui font partie de notre quotidien, qui nous facilite la vie…
Prenons l’exemple du téléphone portable : il y a 20 ans, personne n’en avait. On n’était pas plus malheureux. On était prévenu des choses importantes. Certes, on pouvait aller faire les courses, oublier d’acheter des tomates et que notre conjoint nous dise « je savais que t’oublierais les tomates » quand on rentrait sans. Maintenant, on s’appelle pendant les courses « tu penseras aux tomates ».
On possède des tas de choses qui nous facilite la vie mais nous sommes tellement attachés à ces objets du quotidien que finalement, oui, ce sont les objets qui nous possèdent.
Si l’on creuse encore plus la question, on peut dire que les objets nous possèdent car on relativise beaucoup moins face à des problèmes du quotidien »
Peut-être aussi qu’il n’ont pas idée de ce qu’il y a ailleurs et qu’ainsi, ils n’ont pas de raison d’être insatisfaits.
Le mois d’octobre
23/10/09
Le mois d’octobre c’était:
Me faire larguer en beauté, me faire voler mon vélo, etc et c’était aussi: l’amendement 138 oublié au parlement européen, la loi Hadopi 2 qui passe le conseil constitutionnel et oui et tout un tas d’autres bonne nouvelles dans le genre.
Avec tout ça, on peut quand même franchement sourire et penser que y a pas à dire, le mois de novembre sera surement meilleur.
« Rendez vous compte ? sur internet, n’importe qui peut dire n’importe quoi »
15/10/09
« Qui veut contrôler internet ? » C’est le titre de la dernière conférence de Benjamin Bayart enfin disponible sur trollfr:
allez y, y a du miam: http://linuxfr.org/2009/10/14/26026.html
Sur la Neutralité du Net
27/09/09
La neutralité du net, c’est super important. Heureusement, certains l’ont compris et se battent pour..

- http://www.laquadrature.net/fr/neutralite_du_Net
- http://fr.wikipedia.org/wiki/Neutralité_de_réseaux
- Table ronde politique sur la Neutralité du Net aux RMLL 2009
Spiders
6/11/08
Un jour, une amie, de celles qui collectionnent les blagues TéléZ, m’a dit :
« I spoke tonight to the spider on my pillow and it told me not to worry about life, because life is like a web. a wide wild web, full of surprises. You’re stuck in it, you just have to hold on. Because of its wise ideas, I decided not to squash it. And I dreamt I was a fly. But that is not true, we are spiders. »
