2010-04-08 21 views
2

Je suis en train d'analyser mon site Web.Codeigniter benchmarking, d'où viennent ces ms?

class Home extends Controller { 

    function Home() 
    { 
     parent::Controller(); 
     $this->benchmark->mark('Constructor_start'); 

     $this->output->enable_profiler(TRUE); 
     $this->load->library ('MasterPage'); 

     $this->benchmark->mark('Constructor_end'); 
    } 

    function index() 
    { 
     $this->benchmark->mark('Index_start'); 

     $this->masterpage->setMasterPage('master/home'); 
     $this->masterpage->addContent('home/index', 'page'); 
     $this->masterpage->show(); 

     $this->benchmark->mark('Index_end'); 
    } 
} 

Voici les résultats:

Classes de base de temps de chargement: 0,0076
Constructeur: 0,0007
Index: 0,0440
Controller Temps d'exécution (Accueil/Index): 0,4467
exécution totale Heure: 0.4545`

Je comprends d les éléments suivants:

  • Temps de chargement des classes de base (0,0076)
  • Constructor (0,0007)
  • Index (0,0440)

Mais où est le reste du temps à venir de?

+0

Quelle est l'unité des résultats? – MrD

Répondre

1

Je n'ai pas t fait beaucoup de benchmarking des sites alimentés par CI, mais 0.4545 ne semble pas très rapide. Le chargement automatique de tout ce qui est défini dans le fichier config/autoload.php est une chose qui se produit sous l'égide de Controller Execution Time (mais en dehors de vos tests de performances personnalisés). Si vous chargez de nombreuses bibliothèques ou modèles ici, cela ajouterait à votre temps d'exécution du contrôleur sans raison immédiatement évidente.

+0

Non 0.4545 n'est PAS très rapide, c'est la principale raison pour laquelle je me retrouve ici ... Je vais essayer de mettre des marques dans les bibliothèques que je charge ... – Ropstah

+0

Bonne prise, ça semble être un plugin. Merci! – Ropstah

0

Je pense que la dernière ligne de votre fonction d'index doit être

$this->benchmark->mark('Index_end'); 

Cette faute de frappe pourrait avoir causé les résultats drôles de.

+0

Non, ce n'est pas le problème. Était juste une faute de frappe dans la question. Merci de l'avoir remarqué ... – Ropstah

0

Codeigniter benchmarks automatiquement le temps total de la demande à la sortie finale est envoyée au navigateur (ce qui est le temps total d'exécution)

En outre, quand il est sur le point d'appeler le contrôleur/méthode que vous spécifiez (généralement via l'url) il marque le début de cela et quand cette méthode renvoie quelque chose ou envoie des données à la sortie, il termine ce benchmark (c'est le temps d'exécution du contrôleur (Home/Index))