Le prestazioni di un array associativo in PHP

November 20

Le prestazioni di un array associativo in PHP


PHP è un linguaggio server-based per la creazione di applicazioni Web interattive e rendering dei contenuti utente su richiesta. Esso supporta una varietà di classi di raccolta dei dati nel suo costrutto array, compresi gli array indicizzati e array associativi. Con un gran numero di utenti, prestazioni del codice può diventare un problema. Anche se gli array associativi non richiedono notevole sovraccarico della CPU, hanno bisogno di più memoria per memorizzare nella RAM come il vostro programma è in esecuzione.

array indicizzati

Un array indicizzato di serie in PHP e altri linguaggi contiene una serie di successivi indici valore mappato per i valori dei dati. Un valore di dati si accede facendo riferimento l'indice, o la posizione nella matrice.

$ My_array = array (1, 2, 3, 4, 5);

Accesso al elemento "$ my_array [0]" restituisce il valore 1. Gli array indicizzati sono i migliori per l'archiviazione e l'accesso ai dati strutturati. Sarebbe inefficiente per effettuare le seguenti operazioni, come sarebbe riempire i vuoti nei valori di indice, prendendo una grande quantità di memoria:

$ My_array [] = 7;
$ My_array [13] = 5;
$ My_array [76] = -4;

array associativi

Al contrario di array indicizzati, array associativi PHP contengono una serie di coppie chiave-valore. I valori dei dati sono accessibili facendo riferimento la chiave che può essere sia una stringa univoca o un valore numerico. L'esempio inefficiente di cui sopra può essere meglio scritto come un array associativo:

$ My_array (0 => 5, 13 => 5, 75 => -4);
$ My_array ( "uno" => 1, "due" => 2, "diciassette" => 17);

Prestazioni CPU

PHP è ottimizzata per l'elaborazione delle stringhe. Avere una stringa come la chiave per un array associativo non produce molto in alto. Quando si accede a un elemento di un array associativo in PHP, la matrice non viene cercato dall'inizio alla fine per determinare se una delle chiavi partita. Invece, una chiave in un array associativo mappe per un valore di indice, senza overhead aggiuntivo nel tempo di ricerca su array indicizzati.

Prestazioni di memoria

Dal momento che array associativi di PHP memorizzano una coppia chiave-valore, al contrario di solo un valore, essi richiedono un ulteriore sovraccarico della memoria, lo spazio il programma utilizza nella RAM durante l'esecuzione, rispetto ad array indicizzati. Questa memoria aggiuntiva è normalmente trascurabile a meno che non si sta utilizzando matrici molto grandi. In questo caso, può essere prudente dividere matrici molto grandi in un sottoinsieme di array che può essere letta come necessario.