Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-12-2007 15:23:18

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Zend_Date et performance !

Je ne sais pas si vous utilisé Zend_Date, autant je suis vraiment emballé par l’API et le support i18n  mais je suis vraiment déçu par ses performances.

Après l’ajout de Zend_Date dans un script qui m’affiche un listing de 20 enregistrements je suis passé d’un temps d’exécution de 0.9s à 4s !!! Ce qui est énorme juste pour formater des dates !!!

En procédant à un petit test sur une boucle qui affiche 100 dates (pensez à une discussion dans un forum) j’obtiens un temps d’exécution de 5s (sur une distrib Debian propulsé par un PIII 350mhz).
Ce qui est d’autant plus étrange vu que je ne demande aucune donnée i18n sur le formatage.

Code:

require_once 'Zend/Date.php';
$zDate = new Zend_Date();
$zDate->setLocale( 'fr_FR' );
$format='dd/MM/YYYY';
$dateString = '2007-11-10 13:45:00';

$time_start = microtime(true);

for($i=0; $i<100; $i++){
    $zDate->set($dateString, 'YYYY-MM-dd HH:mm:ss');
    echo $zDate->get($format);
}

$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Executed in: $time s\n";

Un profiling révèle que pour chaque composant de la date j’ai un accès au CLDR (fichier xml qui contient les infos pour l’internationalisation).

En activant les caches :
Zend_Locale::setCache($cache),     
Zend_Locale_Data::setCache($cache)

On arrive à un temps d’exécution de 2s, mais je trouve cela encore énorme. Pour comparaison la même boucle avec la nouvelle classe DateTime de php 5.2.0. et sup me donne un temps d’exécution de 0.022 s !!!

En conclusion je ne vais pas utiliser Zend_Date tout de suite mais DateTime. J’ai créer un class qui hérite de DateTime auquel j’ai ajouté des fonctionnalités.

A la vu du profiling je pense quand même qu’il y a pas mal de chose à faire pour amélioré les performances de Zend_Date, si vous être intéressé j’ai ouvert un ticket dans jira :
http://framework.zend.com/issues/browse/ZF-2311

Dernière modification par 2mx (19-12-2007 15:24:18)

Hors ligne

 

#2 19-12-2007 18:31:57

2mx
Membre
Lieu: Grenoble
Date d'inscription: 06-08-2007
Messages: 125

Re: Zend_Date et performance !

Voilà je viens finir une toute première mouture d'une classe Mmx_Date sensible à la locale avec une version sérialisé du CLDR.

Sur la même boucle s'obtient un temps d'exécution :
* de 0.03s  sans données de langages
* de 0.17s avec des dates complètement internationalisé

Bien sur on ne pas comparer avec Zend_Date qui lui fonctionne avec des versions de php antérieur à 5.2.0 et une palette de date presque infini alors que DateTime est limité a la tranche 0 - 9999.

@+

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages