Archive

Archives pour la catégorie ‘Tests’

Smarty 2.6, 3.0beta and Dwoo Performances

25/03/2010 un commentaire

UPDATE : July 20, 2010
New tests on Smarty 3.0 : RC1, RC2 and RC3 shows same performances as Smarty 3.0b9, no major change. These Release Candidate fix some bug and security issue and give a better stability.

Smarty 2.6, 3.0beta and Dwoo Performances

The aim of this test is to evaluate which template engine is the more efficient in professionnal environment. I selected only Smarty and Dwoo. Smarty is the template engine which we use at Emisfr since 3 years, we know it and we have many application working with. Dwoo is a Smarty « fork » but with a great Oriented Objet improvement. Smarty 3.0 is currently in developpement and one of its aim is to bring Smarty totaly Object and support Objet inside template, Smarty 2.x is likely PHP4 oriented, functional not really object. There is some other template engines like Template Lite (it’s also a Smarty « fork »).

Test environment

dual core Athlon 4200+
3.3Gb RAM
Apache : 2.2.13
Mod_PHP : 5.2.11 + APC
Apache Bench : 2.3

Tested versions

Smarty 2.6.26 : current stable
Smarty 3.0b7 : previous beta, usefull to compare evalution between betas
Smarty 3.0b8 : current beta
Dwoo 1.1.1 : current stable

The tests

Display of a template with and without template engine cache. We are talking about Template engine cache, not APC. When template engine cache is enable, the template engine have not to re-generate PHP code from Template file (tpl).
We will have a look on Memory peak and display time.

Cache enabled
Optimized Site
Force compile
Only to get performances
but this configuration never use
in production
Force Compile Check
Developpment configuration
no cache
No Compile Check
Production Site
most common configuration
cache_lifetime=-1
caching=1
force_compile=false
cache_lifetime=0
caching=0
force_compile=true
cache_lifetime=0
caching=0
check_compile=true
cache_lifetime=0
caching=0
check_compile=false
KINDTEST s3b8_rps s3b8_tpr s3b7_rps s3b7_tpr s2_rps s2_tpr dwoo_rps dwoo_tpr
cache_enabled 167,98 29,77 186,67 26,79 247,05 20,24 187,85 26,62
force_compile 16,33 306,24 16,72 299,05 62,38 80,15 37,2 134,41
force_checkcompile 126,96 39,38 131,83 37,93 187,37 26,69 108,49 46,09
no_checkcompile 127,39 39,25 132,69 37,68 184,89 27,04 111,99 44,65
Libraries Size
Template Engine Size (ko) File count
Smarty 2.6.26 223Ko 69 files
Smarty 3.0b7 627,8Ko 177 files
Smarty 3.0b8 635,4Ko 103 files
Dwoo 1.1.2 396,2Ko 101 files

Next we will test performances with hight access to the test page. For theses tests I will use « ab » (apache bench) with the following parameters : 1000 requests, 5 concurrency. We shall study requests per second, time per request and failed requests.

Execution time for the test page

Execution time

Execution time

When the cache is enable the results are closed, Smarty 2.6 have an advantage over others. But all are above 50ms. Smarty 2.6 and Smarty 3.0beta are very closed, with less than 15ms, it’s the best score.

When force compile is enabled, we can see Dwoo and Smarty 2.6 are the better, above 60ms. But Smarty 3.0beta is 3times slower than Smarty 2.6 with an execution time higher than 110ms. Don’t forget Template Engine force compile option is never enabled in production, this is a test to know « who is the best ».
In « developpment » configuration, result are good, lower than 15ms for evryones, Smarty 2.6 keeps head with 8ms.
In « common production » (no compile check), results looks like « developpment ». The deferencies between them are insignifiant.

Memory print

Memory

Memory

Previously we see that Smarty 2.6 is the faster Template Engine, now what is there memory prints.
Dwoo and Smarty 2.6 are below than 1,7Mo is a good score.
But like execution time the more important is when the cache is enabled. The template engines are below than 850 Ko, Smarty 2.6.26 is about 590 Ko this is the better score Smarty 3.0beta and Dwoo are about 800Ko.

When a Template Engine is configured in « force compile » mode, the Engine have to compile the templates files each time. We can see Smarty 3.0beta consum 2 times more than Smarty 2.6 : 2,4 Mo. Dwoo is juste behind Smarty 2.6 with 1,5Ko

When force check compile is enabled all are above 760ko (the bests scores), why Smarty use less memory than « cache enabled » ? I have no response yet.

When force compile si disabled, results are exactly sames.

Request per seconde

Request per second

Request per second

To simulate a high traffic on the test page I use apache bench, first when force compile is enabled, the results are likely Execution time test above. We can see Smarty 2.6 is the faster Template Engine with about 60 request per second, Dwoo is behind with 40 request per second and Smarty 3.0beta lag behind with 20 requests per seconde (3 time slower than Smarty 2.6).
When the Template Engine Cache is enabled all performances are satisfactory with more than 160 request per second. Smarty 2.6 is still the better with 247 request per second. Dwoo and Smarty 3.0beta are closed with 180 request per second.
In « force check compile » results are good, with more than 125 request per second. But Smarty 2.6 is 30% Faster than Smarty 3.0b. There is no major differencies when « No check compile » is enabled.

Theses results are the reflection of the previous Execution time test

Time per request

Time per request

Time per request

To finish this study, we have a look to the average time per request. Like others tests, When force compile is enabled, Smarty 2.6 is still the faster, with 80ms per request, dwoo is behin with about 135ms per request, Smarty 3.0beta are in the dust with more than 290ms per request.
When cache is enabled all competitor are closed, with a good score below than 30ms per request, Smarty 2.6 takes head with less than 21ms per request.
In force check compile configuration, the results are good with less than 40ms for Smarty, but Smarty 2.6 is the better. When check compile is disabled, the results are close with « force check compile », no major differencies.

To conclude, Smarty 2.6.26 is the better, faster and lighter template engine. Dwoo is a good alternative but its performances are worst than Smarty 2.6.26 and it’s not totally compatible with current Emisfr Software. Smarty 3.0 is good, but is a consume some more memory, but it’s very good score for a beta. The results of Smarty 3.0b are very close with Smarty 2.6.26. The developpment team do a good job ! But, don’t forget Smarty 3.0 is beta, may be some improvement will come.
This test will be updated with Template Engine evolution and release.
Emisfr is using Smarty 2.6.x but hope switch to Smarty 3.0 when it will be released as stable.

Test Files :
Smarty Test Files Package

Follow discution about this test on Smarty forum

Test d’outils de e-commerce OpenSource

14/10/2009 2 commentaires

Le but de ce test est d’évaluer les différents outils de e-commerce présents sur le marché. On s’intéressera aux outils les plus aptes à répondre à des besoins de e-commerce professionnel, proposant un module de paiement et une interface traduite en français. Chaque logiciel à été testé en prenant en compte plusieurs approches : côté marchand, côté client, et côté développeur.


Freeway : un manque de pérennité

URL : http://www.openfreeway.org/
+ installation simple et bien faite
+ supporte la vente de services, il est possible par exemple de louer un cours de tennis à une heure précise, cela apparait sur un planning
– dernière version stable datant de septembre 2008
– version en développement inactive depuis novembre 2008
– peu utilisé

Freeway, est un logiciel de e-commerce écrit en PHP. Ce logiciel n’est plus actif depuis septembre 2008, il a donc été écarté malgré quelques fonctions intéressantes comme la « prise de rendez-vous », via un planning affichant les horaires disponibles. Il n’est cependant pas sérieux de proposer à des professionnels un logiciel qui n’est plus actif car cela signifie qu’il n’est pas possible de garantir que le logiciel sera mis à jour, et bénéficiera de patchs de sécurité. Enfin, ce logiciel est très peu utilisé, il est donc difficile de trouver des modules complémentaires.

VirtueMart : du site vitrine à la vente en ligne

URL : http://www.virtuemart.net/
+ Joomla
+ module de paiement Atos
+ traduction en Français
+ cache
– logiciel lié a Joomla dont le e-commerce n’est pas son métier
– sécurité

VirtueMart est un module pour Joomla ou Mambo. De part sa relation directe avec Joomla, cela en fait un outil moins attirant que ceux que nous verront plus loin, pour la simple et bonne raison que Joomla est à la base un CMS, et que VirtueMart transforme ce CMS en boutique en ligne, ce qui n’est pas son métier. VirtueMart dispose cependant de modules supplémentaires tel qu’un module de paiement Atos, mais aussi d’une traduction en français. Joomla disposant d’une fonction de Cache, VirtueMart en hérite. Cet outil est très ergonomique, on trouve rapidement ce que l’on cherche. Il conviendra pour une petite boutique en ligne, dont le site vitrine est déjà sous Joomla. Les utilisateurs de Joomla s’y retrouveront rapidement. Le développement est actif mais la dernière version date de janvier 2009. Enfin Joomla est régulièrement la cible d’attaques des pirates qui font suite à la découverte de failles de sécurité, il sera donc inévitable de se tenir au courant des dernières versions de Joomla afin de garantir la sécurité de la boutique.

Magento : la boutique qui monte mais en manque d’ergonomie

URL: http://www.magentocommerce.com/fr
+ système de cache
+ supporté par des grands nom (Samsung, 3M…)
+ bien programmé
+ communauté active
– modules de paiement Atos (beta)
– localisation en français imparfaite
– pas d’éditeur WYSIWYG
– ergonomie
– templates = mélange entre PHP et HTML

Magento, est un nouvel entrant sur le marché de la boutique en ligne. Il est déjà supporté par de grands noms, comme Samsung, 3M ou encore Nesspresso. Une large communauté est présente, et on trouvera rapidement une solution à un problème, en consultant les forums. Magento dispose d’un « Language Pack Français », mais celui-ci n’est pas maintenu officiellement, on trouvera donc quelques termes anglais après l’installation de celui-ci. Il dispose de plusieurs modules de paiement dont le module Atos mais en bêta, d’autres modules de paiement existent, certains d’entre eux sont payants.
Le système d’installation de module est très simple, mais directement lié au site de Magento, en effet pour installer un module il est nécessaire de copier/coller une « clef » et Magento s’occupe de télécharger le module et de l’installer, apparemment il y a une gestion des dépendances entre modules et le système avertit l’utilisateur lors de l’installation d’un module non stable (beta).
Magento dispose d’une option cache qui permettra d’accroitre les performances en limitant les accès à la base de données. L’interface graphique est plutôt attirante aussi bien du coté boutique que du coté arrière boutique (backoffice).
Par contre, l’ergonomie est à revoir, si certaines informations sont à portée de clic, d’autres demanderont à l’utilisateur de parcourir plusieurs menu et de vraiment chercher pour enfin trouver ce qu’il souhaite. Par exemple pour gérer les fournisseurs, il faudra aller dans l’édition des attributs de produits et choisir manufacturer, puis à l’intérieur, ajouter des fournisseurs.
Un système de personnalisation de l’interface graphique de la boutique est disponible au sein de la partie admin et permettra de préparer le pages « template ». Il faudra par contre que l’utilisateur revoit ses cours de HTML, car il n’y a pas d’éditeur wysiwyg. Les pages sont basées sur le classique « PHP-HTML » mix, qui n’est pas des plus simples, mais qui à le mérite de séparer en partie le code HTML du code PHP. Les webdesigners ne seront donc pas perdus. Il sera également possible de faire participer les visiteurs en proposant des sondages, le module étant installé par défaut. Un utilisateur de la communauté à développé un module de migration depuis osCommerce 2.2, mais il ne migre que les produits et catégories. La base de données est bien construite et possède des index. Le moteur utilisé est innoDB. Cet outil a donc de grandes qualités, même s’il y a encore des choses à améliorer, il pourra être proposé pour une utilisation professionnelle.

OsCommerce : Un dinosaure en peine de renouvèlement

URL : http://www.oscommerce.com/
+ installation rapide et simple (moins de 3minutes)
+ traduction en français
+ gestion du stock
+ cache
+ module de paiement Atos
+ quelques rapports
+ communauté
+ version 3.0 prometteuse
– thème graphique par défaut
– système d’installation des extensions
– qualité du code
– sécurité
– version proposée non stable

osCommerce, est le plus ancien outil de e-commerce, il a une large communauté autour de lui, et un nombre de modules impressionnant. Utilisé par plus de 12000 boutiques référencées, il pourrait être une valeur sure. Cependant le développement a un rythme assez lent, et les versions proposées pour la mise en production sont parfois des Release Candidate (des versions pas totalement finies). L’installation se fera en quelques minutes. L’interface graphique est ergonomique, et même les nouveaux venus trouveront rapidement leurs marques. Le thème graphique par défaut est vraiment horrible, mais des thèmes graphiques existent sous forme de contributions. Les nombreux modules pour osCommerce permettront de personnaliser la boutique, mais leur installation nécessitant bien souvent de modifier du code, il faudra avoir quelques notions de PHP. La version testée est une 2.2RC2a, le code est de type php3. Et c’est bien là tout le problème avec osCommerce. En effet le code spécifique php3 pose de très nombreux problèmes de sécurité et de maintien en production. De part son utilisation mondiale et ces problèmes de code, osCommerce connait souvent des découvertes de failles de sécurité qui sont alors exploitées. L’équipe de développement a tardé à prendre en compte ce problème avec la version 3.0 qui est en cours de préparation (en alpha5) et qui sera compatible PHP 5.2.x alors que PHP 5.2 est sorti en 2006… Le code de la version 3.0 est objet et on peut donc espérer que le passage à PHP 5.3 se fera en douceur. Dans l’état actuel des choses, il n’est pas recommandable d’utiliser la version 2.2, en particulier pour une nouvelle boutique, d’ici peu de temps cette version 2.2 sera complètement obsolète du fait de l’utilisation de fonctions supprimées, des register_globals et autre short_open_tags. L’équipe de développement de la version 3.0 prépare un script de migration, mais aucune date de sortie n’est encore prévue.

Prestashop : La boutique française bien pensée

URL: http://www.prestashop.com
+ installation en moins de 3minutes
+ traduction en Français disponible
+ jolis effets graphiques boutique et arrière boutique
+ sécurité (mot de passe + renommage du dossier admin et suppression du dossier install)
+ interface ergonomique
+ rapports et statistiques avancés agrémentés de graphiques
+ templates avec Smarty
– module de paiement Atos Payant (300euros)
– tous les modules complémentaires sont payant ou presque (compter 70 à 400euros)

Prestashop, est un nouvel arrivant sur la scène de la boutique électronique. Développé par des Français, l’outil regroupe déjà 30000 membres. Ce qui frappe avec Prestashop, c’est la qualité de la finition, l’interface graphique d’administration est agréable et ergonomique, elle est plaisante à utiliser. Les nouveaux utilisateurs trouveront ce qu’ils cherchent naturellement. Prestashop dispose de nombreux modules qui s’installent facilement via un système packages zip, le système s’occupe de télécharger, décompresser et installer le module. On trouvera par exemple le module de paiement Atos.
L’ensemble de l’application est parfaitement traduite en français (sauf dans la partie statistiques). L’équipe de développement à utilisé AJAX à bon escient ce qui est très agréable autant du coté client que du coté marchand. Le marchand appréciera les rapports agrémentés par des graphiques représentant les volumes de ventes, de visites, les articles les plus vendus et complété par un commentaire du graphique.
L’accent à été mis sur la sécurité, ainsi les mots de passe doivent contenir des lettres et des chiffres, et le dossier de la partie admin doit être renommé après l’installation.
Prestashop est basé des technologies éprouvées comme le système de template Smarty, qui ravira les webdesigners comme les développeurs, mais aussi des modules PEAR. Le code est de très bonne qualité avec un découpage par objet. On peut regretter qu’il n’y ait pas de système de cache autre que celui de Smarty qui cache ses templates, il aurait été intéressant de cacher également toute la partie boutique en HTML, de manière a ne pas reconstruire entièrement les pages. Cependant les performances semblent être au rendez-vous car les pages sont générées en général en moins de 1 seconde. La base de données a bien été pensée, des indexes sont présents et la taille des champs à été définie. C’est un outil parfaitement recommandable à des professionnels.

Nous l’avons vu qu’il existe des outils de plus ou moins bonne qualité suivant le type de boutique que l’on souhaite mettre en place. Les deux boutiques sortantes sont Magento et PrestaShop qui, développés récemment (depuis 2007-2008) ont su répondre aux problématiques web 2.0 et programmation Objet. Cela assure à ces projets une ergonomie, mais surtout une pérennité. La programmation objet permet à un projet d’être canalisé et rationnel, elle permet de centraliser les fonctions et donc de simplifier la tâche des développeurs. Il reste a savoir si ces solutions arriveront à s’imposer en particulier face à osCommerce qui détient près de la moitié du marché français, l’un des enjeux pourra donc être de proposer une procédure de migration depuis osCommerce, ce que pour le moment ni Magento, ni PrestaShop ne proposent. Il se pourrait même qu’EmisFR soit déjà sur le coup …

Part de marché pour les boutiques en ligne enregistré par e-komerco (source des données http://www.e-komerco.fr/ octobre 2009)

Part de marché pour les boutiques en ligne enregistré par e-komerco (source des données http://www.e-komerco.fr/ octobre 2009)

Cédric FERRY – EmisFR