Quali tecniche dovrei tenere a mente per progettare algoritmi efficienti in PHP?

4

Sto cercando di risolvere le sfide di programmazione su www.interviewstreet.com utilizzando PHP. Ci sono alcune tecniche che dovrei tenere a mente che ottimizzeranno l'efficienza dell'algoritmo? Ad esempio, ho letto che usare i costrutti linguistici di PHP rispetto alle chiamate di funzione è più veloce. È vero? Altri suggerimenti?

    
posta Shaan 26.10.2011 - 03:39
fonte

1 risposta

7

Non usare le funzioni non è il marchio di efficienza algoritmica. Gli algoritmi stessi sono indipendenti dal linguaggio, sono modi ben definiti di fare qualcosa che può essere implementato nella maggior parte delle lingue. L'efficienza algoritmica è molto più preoccupata di idee come "input dato di dimensione n, quanti passaggi ha bisogno di un algoritmo per calcolare la risposta y?" e "se aumento l'input, come influenza l'algoritmo?"

Immagina questo - cosa succederebbe se ordinassi 100 milioni di elementi in una lista? Se la tua funzione era qualcosa come bubble sort , non usare una chiamata di funzione ti farà risparmiare qualche microsecondo di elaborazione, ma l'ordinamento effettivo impiegherà molto più tempo e nani i guadagni dal non utilizzare le chiamate di funzione o qualsiasi altro numero di cose (in più, non rompere il tuo codice di solito è un cattivo design e cattivo per la manutenzione!).

L'efficienza algoritmica viene in genere notata con Notazione Big-O e fa parte di teoria della complessità {/a>. Si riferiscono anche a strutture di dati , che sono cose come liste collegate, matrici, alberi, grafici, ecc.

Probabilmente vorrai leggere su algoritmi fondamentali di base, strutture dati e idee, come:

Per i libri, se sei interessato, ci sono:

PS: molte volte vedrai persone che vogliono ottimizzare il loro codice per spremere il più possibile le sue prestazioni. Quello che dovrebbe essere chiesto prima è se hanno scelto l'algoritmo giusto per farlo e stanno usando le strutture dati corrette.

    
risposta data 26.10.2011 - 03:59
fonte

Leggi altre domande sui tag