• About Me
  • Skills
  • Education
  • Employment
  • Blog
  • Contact
  • Open Source
    • WordPress
      • 3B Meteo Plugin
      • Facebook Like and Send
      • Google Monthly XML Sitemap
      • Google News Sitemap
      • Google Plus Comments
      • Google Plus One Button
      • I don’t endorse Google
      • I don’t endorse Wikipedia
      • I don’t endorse WIkipedia
      • Ottimizzare WordPress per renderlo più veloce
      • Rich Category Editor
      • Save To Google Drive
      • Sociable Italia
      • Third Party Cookie Eraser
      • Twitter Follow Button
      • WP instantempo
      • WP Super Secure and Fast htaccess
    • Plone SEO – collective.perseo
  • Creations
    • Web Marketing
    • SEO
    • WPO
    • SEO Stupidity
    • Webmaster Superhero
    • Il Vero SEO

Web Performance Optimization: alcune considerazioni sul Convegno Gt

07 Dicembre 2009 / By Andrea Pernici
  • Home
  • Web Performance Optimization: alcune considerazioni sul Convegno Gt

Al risveglio dal dopo Convegno Gt (strepitoso quest’anno) pieno di soddisfazione per la grande riuscita e per la grande qualità degli interventi, ma con qualche piccola considerazione su uno dei migliori e più utili interventi della prima giornata. Il preparatissimo Alessandro Martin ha messo in luce alcuni fattori molto attuali, viste le novità di google, sui tempi di caricamento delle pagine web e i modi per risolverli in modo veloce e più o meno semi-automatico, consigliando anche degli ottimi strumenti disponibili in rete.

Molti dei suoi concetti sono poi stati ripresi in un intervento di Tiziano Fogliata nella seconda giornata, che più nello specifico li ha applicati all’effettivo utilizzo nell’ottimizzazione di WordPress.

Durante il suo intervento ha fatto una premessa che rimane discutibile quando ha affermato che non è né l’ottimizzazione del database, né l’ottimizzazione del codice, né le performance del proprio host che influiscono sul fattore velocità di risposta, ma semplicemente bisogna lavorare sul frontend.

Non c’è alcun dubbio che il frontend sia un punto importante su cui lavorare in quanto è decisamente la parte più pesante dove possiamo andare a scremare tra ottimizzazione di CSS, Javascript, immagini e quant’altro, ma d’altro lato quando andiamo a parlare di siti di grosse dimensioni che devono andare a gestire enormi quantità di dati allora questo non è sempre vero (a tal proposito alla cena di domenica con Enrico Altavilla parlavamo di grosse quantità di dati da elaborare – in merito al suo software su google news).

Sul web “commerciale”, quello dei cms opensource e dello smanettone autodidatta, del php+mysql, le strutture dati che vengono utilizzate sono spesso uniformate e tendenzialmente l’approccio è quello di non considerare nemmeno la possibilità di ottimizzare gli algoritmi o quant’altro.

Partiamo dal presupposto che il tempo di esecuzione di un algoritmo dipende sostanzialmente dai dati di input e dalla potenza del calcolatore (CPU).

Quando si parla infatti di tempi di esecuzione degli algoritmi si fa riferimento alla “Complessità computazionale dell’algoritmo”. In questo contesto il tempo di esecuzione viene espresso in termini di numero di operazioni necessarie affinché l’algoritmo termini in modo da renderlo valido in tutti i tipi di calcolatori. La conseguenza di questo è che in modo evidente il codice che scriviamo e l’algoritmo che elaboriamo va a influire in modo decisivo sui tempi e abbraccia in modo importante anche le performance della macchina su cui viene eseguito.

Il tempo di esecuzione di un algortimo viene identificato con T(n), dove n è l’input, e la sua complessità computazionale con “O grande”.

L’algoritmo può essere risolto in modo ricorsivo o iterativo, tenendo in considerzione che il metodo ricorsivo anche se più leggibile è molto più costoso a livello di uso di CPU e RAM.

Ora non voglio addentrarmi troppo nella questione, ma voglio portare qualche piccolo esempio utile a comprendere quello di cui sto parlando.

Prenderò in considerazione alcuni piccoli algoritmi di ricerca che possono essere elaborati ipotizzando di dover cercare un valore “x” all’interno di un array di interi e ritornando la posizione dell’elemento cercato in caso di succeso e false altrimenti.

1 – Algoritmo di ricerca lineare [con complessità computazionale O(n)]

{code type=php}<?php

function RicercaLineare($array,$x)

{

for (i=0; i < sizeof($array); i++)

if ($array[$i]==$x) return $i;

return false;

}

?>
{/code}

2 – L’algoritmo di ricerca binaria (in forma ricorsiva) [con complessità computazionale O(log2n)]

La complessità della ricerca binaria è derivabile dal fatto che nel caso pessimo l’algoritmo esegue un
numero di divisioni per 2 del vettore pari a log2n.

Questo algoritmo necessità di un array già ordinato.

{code type=php}<?php

function RicercaBinaria($array,$x, $inizio, $fine)
{
if ($inizio>$fine) {

return false;

} else {

$m=($inizio+$fine)/2;

if ($array[$m]==$x) return $m;

if ($x<$array[$m])

return RicercaBinaria($array,$x,$inizio,$m-1);

else return RicercaBinaria($array,$x,$m+1,$fine);

}

}

?>{/code}

2 – L’algoritmo di ricerca binaria (in forma iterativa) [con complessità computazionale O(log2n)]

{code type=php}<?php

function RicercaBinariaIte($array, $dimensione, $x, $inizio, $fine)
{

$pivot = 0;

while ($iniziale<=$finale)
{

$pivot=($inizio+$fine)/2;

if ($x==$array[$pivot]) return $pivot;

else if (x<$array[$pivot]) $fine=$pivot-1;

else $inizio=$pivot+1;

}

return false;

}

?>{/code}

Questi semplici algoritmi possono essere trovati in qualsiasi buon libro di algoritmi ed è sempre bene utilizzare buoni algoritmi per velocizzare le proprie applicazioni e salvare risorse preziose perché un server meno carico è un server più performante.

La qualità del software è importante e cerchiamo di tenerla sempre in considerazione nella fase di sviluppo senza farla passare come non importante.

PAROLA CHIAVE best practice.

Tags
Algoritmi, Pagine web più veloci, Server, Velocità di risposta

Comments are closed.

Blog Comments
Alessandro 8 Dicembre 2009

Ciao Andrea.
Mi fa piacere che tu abbia parlato del mio intervento in questo post e volevo ringraziarti.
Ne approfitto per fare un chiarimento. Nel mio intervento *non ho detto* che la velocità del codice, del DB e del server non hanno influenza nei tempi di caricamento del sito. Ho detto che nella maggioranza dei siti con cui abbiamo a che fare il fattore che influenza maggiormente il tempo di caricamento è la velocità del frontend.

Con questo non voglio dire che la qualità del software non sia importante o che la normalizzazione del DB non serva a nulla. Sono così importanti che le do per scontate 🙂

La mi considerazione su cosa pesi di più nelle performance di un sito è mutuata dagli studi di Yahoo! (nello specifico di Steve Souders) che sono a loro volta basati sull’osservazione della realtà: se prendi 10 siti del web italiano che frequenti di solito e visualizzi il diagramma a cascata del caricamento dei componenti (ad es. usando il net panel di firebug) di accorgerai che nella maggioranza dei casi il più grosso dispendio di tempo avviene innegabilmente nel front end. Ti dicevo di fare il confronto sul web italiano perché negli USA sono, come al solito, più avanti su questo argomento e a seguito dell’evangelizzazione di Yahoo! e Google sono già corsi ai ripari facendo un ottimo lavoro sulle performance.

Sto pensando di fare un post in proposito per spiegare meglio quello che sapevo sarebbe stato un passaggio controverso.
Ciao e grazie per avermi definito “preparatissimo” 😉

Andrea Pernici 8 Dicembre 2009

Ciao Alessandro,
un vero piacere ottenere la tua risposta !
Avevo capito bene che non intendevi trascurare questi fattori e infatti anche io ho specificato come tu dici che l’incidenza maggiore è nel frontend, ma il messaggio che è arrivato da come hai presentato la cosa è risultato un po’ fraintendibile ed allora ho pensato bene di provocarti (#evil) 😉 in modo da riuscire a chiarire in modo più esaustivo la cosa.

Come sappiamo entrambi ci vorrebbe molto più tempo di quello che si ha in un intervento per spiegare certe cose in modo esauriente ed è per questo che sfruttando il tuo intervento ho pensato che ne potesse nascere una disussione chiarificatrice e istruttiva per tutti.

Altra cosa che ci tenevo a mettere in evidenza è che parlando di SEO tosti e quindi di volumi alti di traffico il codice performante diventa secondo me un’esigenza non trascurabile per tutta una serie di fattori…e come anche tu hai detto…non solo perché Google lo ha detto !

Non devi ringraziare perché la tua preparazione è agli occhi di tutti…e complimenti ancora per l’intervento. Attendiamo i tuoi approfondimenti.

Ciao ciao

Leave a Comment
About Me
about-me
Andrea Pernici

Chief Technology Officer at Search On Media Group and 3BMeteo.com

Categories
  • Apache 2.2
  • Blog e Social
  • CSS
  • Featured Articles
  • Google
  • Grafica
  • Linux
  • Marketing
  • Politica
  • Programmazione
  • Seo
  • Sicurezza
  • Sport
  • Varie
  • Viaggi
  • Video
  • WebServer
Popular Post
  • Corso HTML per SEOlunedì - Dicembre 05, 2022
  • Antonio Jelich e Pallamano 85. La terza di campionato.lunedì - Marzo 15, 2021
  • How to Dominate “Google In-The News” Box (aka “Top Stories”)…lunedì - Maggio 08, 2017
  • WordPress Brute Force Attacks: lock your wp-login.php with ModSecuritymercoledì - Ottobre 28, 2015
  • All the small things that make a great productmartedì - Ottobre 27, 2015
Tags
Andrea Pernici apache Bug Google Convegno gt Convegno SEO Design Errori Google Eventi SEO Facebook Facebook Like Google Google Maps Google News Sitemap Google Plus Google profile gtConference gt study days instantempo Instant Previews Joomla Linkedin Linux Loghi Marketing Matt Cutts Meteo migliori tweet Open Source Ottimizzare Wordpress Page Speed Rich Snippet script Seo SERP shell Significati Nascosti Sociable italia Social Network Twitter Usabilità Web Performance WebProNews Web Server Apache Wordpress Wordpress plugin
Recent Comment
  • Come fare Redirect 301 di una pagina web giovedì - Maggio 06, 2021 08:44 am
  • Come fare Redirect 301 di una pagina web martedì - Maggio 04, 2021 02:03 pm
  • Come fare Redirect 301 di una pagina web sabato - Aprile 10, 2021 02:05 pm
  • Come fare Redirect 301 di una pagina web venerdì - Aprile 09, 2021 11:02 pm
  • Come fare Redirect 301 di una pagina web giovedì - Aprile 01, 2021 10:08 am
© 2017 Andrea Pernici - SEO, Design & Technology as attitudes - Me on freebase - Privacy Policy