Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-02-2012 14:57:26

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Performance Zend_Date/Currency/Locale

Bonjour à tous,

Je fais fasse actuellement à un problème de performance.

Je génère un tableau HTML assez basique contenant environ 850 éléments. Lors de la génération, je fais appel à Zend_Date et à Zend_Currency pour afficher respectivement une date et un montant par ligne.

J'utilise les mêmes instances et procède juste à une modification via « $date->set() » et « $currency->setValue() ».

Si j'utilise ces deux modules, j'obtiens une génération en 8.5 secondes.

Si je désactive Zend_Date (affichage direct de la date), j'obtiens 4.5 secondes.

Et enfin, si je désactive de la même façon Zend_Currency (utilisé 2 fois pour deux montants par ligne), j'obtiens 1 secondes.

J'ai activé les caches de cette manière :

Code:

[lang=php]
        $cache = Zend_Cache::factory('Core', 'File',
            array('automatic_serialization' => true),
            array('cache_dir' => realpath(APPLICATION_PATH.'/../var/tmp'))
        );
        $cache->clean(Zend_Cache::CLEANING_MODE_OLD);
        Zend_Registry::set('Zend_Cache', $cache);

        Zend_Locale::setCache($cache);
        $locale = new Zend_Locale("fr_FR");
        Zend_Registry::set('Zend_Locale', $locale);

        Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
        Zend_Currency::setCache($cache);

J'aimerai savoir s'il n'y a rien d'autre à faire pour améliorer les performances de ces modules ?

Hors ligne

 

#2 22-02-2012 17:50:34

r.monceau
Membre
Date d'inscription: 02-11-2009
Messages: 59

Re: Performance Zend_Date/Currency/Locale

Salut,

Tu peux définir un cache pour Zend_Date :

Code:

Zend_Date::setOptions(array('cache' => $cache));

Ca le mettra automatique sur ta locale au passage apparement.

Code:

Zend_Locale_Data::setCache($value);

Je ne sais pas si c'est volontaire de ne pas avoir défini de durée de vie à ton cache.
Tu peux utiliser la propriété automatic_cleaning_factor pour supprimer le cache invalide toutes les x écritures plutôt que de faire un cleaning mode old à chaque appel de ta page. (A voir niveau performance).

Tu peux aussi utiliser le cache mémoire qui sera plus performant.

J'ai pas trop d'autres idées par rapport à ce bout de code (ne pas utiliser Zend_Date ? hmm). Essaye de regarder avec xDebug ou autre à quels endroits tu passes le plus de temps et optimise juste ces endroits là. 1ms où tu passes 1000 fois, c'est 1 seconde de gagnée.


Sujet intéressant en tout cas et j'ai hâte de voir d'autres réponses big_smile

++

Hors ligne

 

#3 22-02-2012 18:23:48

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Re: Performance Zend_Date/Currency/Locale

En fait, dans ce cas, je me dis que le cache n'a pas d'importance. Une fois un Zend_Cache (ou autre) instancié une première fois, en théorie, le cache a été chargé en mémoire (RAM).
Est-ce qu'un accès disque est effectué à chaque appel à la méthode "->set" ?
J'avoue ne pas avoir examiné en profondeur le fonctionnement du cache avec ces modules.

Pour moi, le cache a une importance pour chaque requête effectuée. En l'occurrence ici, c'est dans une boucle que ça "rame".

Je pense me passer de Zend_Date. Mais pour Zend_Currency, ça n’embête un peu plus.

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