CodeIgniter: Analizziamo le performance del nostro codice

23 Oct 2019 | M.A.D.R.

Ogni programmatore ad un certo punto dello sviluppo del codice, ha necessità di analizzare le performance della propria applicazione/funzione/metodo, infatti CodeIgniter ha una classe di gestione Benchmark sempre attiva, che consente di calcolare la differenza di tempo tra due punti distinti e contrassegnati dal programmatore.

Questa libreria "Benchmark" viene sempre avviata nel momento in cui viene invocato il framework e termina con la classe di output appena prima di inviare la vista finale al browser, consentendo di mostrare un tempismo molto accurato dell'intera esecuzione del sistema.

A cosa e a chi serve?

Come detto in precedenza un codice può funzionare in ogni situazione, ma l'ottimizzazione dell'esecuzione dello stesso non è sempre intuitiva, ed è in questo caso che la Lib arriva in supporto al Dev per analizzare le richieste e l'esecuzione del codice, permettendo così di avviare un processo di ottimizzazione.

Immaginiamo un codice di questo tipo

$this->benchmark->mark('inizio');
	foreach ($data as $k=>$v){
		foreach ($v as $kk=>$vv){
			echo $vv.' - ';
		}
		echo "\r\n";
	}
$this->benchmark->mark('fine');
echo $this->benchmark->elapsed_time('inizio', 'fine');

Ossia stampiamo tutti i valori di un'array multidimensionale.

In questo caso la mia macchina impiega ad elaborare la richiesta in "0.0066 " secondi, anche se è un tempo molto basso la complessità è lineare in base al numero di items del primo e secondo array, quindi abbiamo effettivamente 2 vincoli:

  • Numero di items di Data
  • Numero di items in v

Per limitare le dipendenze si potrebbero sfruttare funzioni native del linguaggio con un piccolissimo accorgimento come segue:

$this->benchmark->mark('inizio');
	foreach ($data as $k=>$v){
		echo join(' - ',$v);
		echo "\r\n";
	}
$this->benchmark->mark('fine');
echo $this->benchmark->elapsed_time('inizio', 'fine');

In questo caso con lo stesso codice, stessa macchina, stessa dimensione dell'array il tempo totale d'esecuzione è " 0.0029 " secondi, ossia meno della metà dell'iteratività precedente.

Avviandoci verso la fine dell'articolo possiamo invocare la funzione in modo globale in questo modo:

echo $this->benchmark->elapsed_time();

Quando i parametri sono assenti, il benchmark conterà fino a quando non viene inviato l'output finale al browser. Non importa dove usi la chiamata di funzione, il timer continuerà a funzionare fino alla fine.

Arrivati a questo punto, non resta che augurarvi buon Banchmarking Code!

Codeigniter VS Laravel: chi vince la sfida?

23 Oct 2019 | M.A.D.R.

Oggi l'evoluzione dei linguaggi sono sempre più orientate verso la semplificazione del codice, l’ottimizzazione delle funzionalità e la velocità di esecuzione. Codeigniter il nonno di tutti i framework, riesce ancora a tener testa al gio...

Codeigniter Migration: Versioning Database

23 Oct 2019 | M.A.D.R.

Per “migration” s'intende le gestione delle varie versioni di un database. Grazie al concetto di migration possiamo effettuare tutte le operazioni sul database che abitualmente effetuiamo con strumenti come phpMyAdmin, Toad, MySQL...

Codeigniter CLI: Eseguiamo lavori da linea di comando.

23 Oct 2019 | M.A.D.R.

Come tutti sapranno un framework che si rispetti mette a disposizione la CLI (command line interface), la quale permette di richiamare comandi più o meno complessi. A cosa servono? Per semplicità soffermiamoci solo ad alcuni principali utili...

Codeigniter: Estendiamo il framework con gli HOOKS

23 Oct 2019 | M.A.D.R.

Spesso i dev hanno necessità di modificare il comportamento ed il flusso dell'applicazione, codeigniter mette a disposizione gli HOOKS. Lavorare con un framework, anche se molto semplice, spesso induce ad errori comuni e poco sicuri, basti pensa...

Codeigniter: Profilazione dell'applicazione

23 Oct 2019 | M.A.D.R.

Seguendo l'articolo del Banchmark, per completare le operazioni di performance del nostro codice, Codeigniter permette la creazione di una profilazione dettagliata dell'esecuzione del nostro codice. La classe Profiler visualizzerà i risultati de...

CodeIgniter: Analizziamo le performance del nostro codice

23 Oct 2019 | M.A.D.R.

Ogni programmatore ad un certo punto dello sviluppo del codice, ha necessità di analizzare le performance della propria applicazione/funzione/metodo, infatti CodeIgniter ha una classe di gestione Benchmark sempre attiva, che consente di calcolare ...

Codeigniter: Template Engine o Template Parser

23 Oct 2019 | M.A.D.R.

Salve a tutti, dopo aver commentato la funzione dei controller e dei model non resta che parlare delle view, o come meglio definiti Template Engine o Template Parser. Codeigniter non ha un vero e proprio Template Engine, ma sfrutta una classe nat...

Codeigniter: Interazione con i database

23 Oct 2019 | M.A.D.R.

Continuiamo questa piccola avventura: CodeIgniter può interagire con i database attraverso un model (ma non è obbligatorio) o attraverso un controller (altamente sconsigliato). Cosa significa interagire con un database? Possiamo recuperare ...

CodeIgniter: Flussi di funzionamento "Router"

23 Oct 2019 | M.A.D.R.

Quello che uno sviluppatore, abituato a interagire con i files php, deve capire la centralità del file index.php, ossia il cuore di un progetto Framework, ed in questo caso Codeigniter router. Non esistono altre pagine all’infuori di index.ph...

Installazione CodeIgniter: prime impressioni

23 Oct 2019 | M.A.D.R.

Abbiamo già citato nell'articolo precedente alcune caratteristiche di questo Framework CodeIgniter. Piccola premessa obbligata... Oggi passeremo al setaccio la procedura d'installazione dello stesso e cercheremo di orientarci nella struttura ...

CodeIgniter - Un framework di tutto rispetto

23 Oct 2019 | M.A.D.R.

Arriva un momento, nel percorso lavorativo di un programmatore Php, nel quale si avverte la mancanza di un framework che possa semplificare la gestione di flussi più o meno complessi. I così detti framework contengono metodi e funzioni in rispo...

Soluzioni complete per ogni esigenza