Login
Libri
Home Le Classi La Classe Benchmarking

La Classe Benchmarking

Share

CodeIgniter è dotato di una classe Benchmarking sempre attiva, che permette di calcolare le differenze in termine di tempo tra due punti precisi.

Nota: Questa classe è inizializzata del systema e non necessità quindi di essere attivata manualmente.

In più, il benchmark inizia sempre al momento che il framework viene invocato, e finisce quando quando la classe output termnina, prima di inviare la vista al browser; mostra con accuratezza quindi l'intera esecuzione del sistema.

Contenuti

Usaer la Classe Benchmark

La classe Benchmark può essere usata all'interno dei propri contrller, views o Models. La procedura per utilizzarla è la seguente:

  1. Definire il punto di inizio;
  2. Definire il punto di fine;
  3. Eseguire la funzione "tempo trascorso" per vedere i risultati.

Di seguito un esempio di codice:


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

// Some code happens here

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

echo $this->benchmark->elapsed_time('code_start', 'code_end');

Nota: Le parole "code_start" e "code_end" sono aribitrarie. Sono semplicemente due parole per idendificare il pundo d'inizio e quello di fine. E' così possibile utilizzare qualunque parola si ritenga, così come si possono inserire quandi gruppi di indicatori si ritiene. Per esempio:


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

// Some code happens here

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

// More code happens here

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

echo $this->benchmark->elapsed_time('dog', 'cat');
echo $this->benchmark->elapsed_time('cat', 'bird');
echo $this->benchmark->elapsed_time('dog', 'bird');

Profilare i Propri Punti di Benchmark

Se si desidera che i propri dati benchmark siano disponibili al profiledata to be available to the Profiler, tutti i pundi di demarcazione devono essere configurati a coppia, ed ogni punto deve terminare con _start e con _end. Ogni coppia deve essere inoltre chiamata allo stesso modo. Per esempio:


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

// Some code happens here...

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

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

// Some more code happens here...

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

Si rimanda alla pagina del Profiler per maggiori dettagli.

Visualizzare il Tempo Totale di Esecuzione

Se si desidera visualizzare il tempo tatale in cui CodeIgniter ha iniziato le sue elaborazione ed il momneto nel quale ha prodotto l'output da spedire al browser, e sufficiente inserire in il seguente codice all'interno del Template della vista:


<?php echo $this->benchmark->elapsed_time();?>

Si noterà che questa è la stessa funzione usata in precedenza per calcolare il tempo tra due intervalli, ad eccezione del fatto che non vengono specificati parametri. Quadno in parametri sono assenti, CodeIgniter non si fermerà a nessun benchmark, ma continuerà fino all'invio dell'output al broser. Non ha importanza dove la funzione viene richiamata, il tempo verrà calcolato fino alla fine del processo.

Una alternativa per vedere il tempo di esecuzione nelle proprie viste è quello di usare la seguente pseudo variabile, se si preferisce non usare il PHP puro:


{elapsed_time}

Note: Se si vuole prendere come punto di riferimento ogni cosa all'interno del proprio controller, sarà necessarion configurare i proprio punti di inizio e fine.

Visualizzare il Consumo di Memoria

Se la propria installazione PHP è configurata con l'opzione --enable-memory-limit, è possibile visualizzare la quantità di memoria consumata dall'intero sistema usando la seguente linea di codice all'interno di una vista:


<?php echo $this->benchmark->memory_usage();?>

Nota: Questa funzione può essere utilizzata solo all'interno di file vista. Il consumo riflette il totale della memoria utilizzata dall'intera applicazione.

Una via alternativa per mostrare il quantitativo di memoria usata è quella di utilizzare la seguente pseudo-variabile all'interno di una vista, se si preferisce non utilizzare il PHP puro:


{memory_usage}

Ultimo aggiornamento ( Sabato 04 Dicembre 2010 06:57 )