Ytelsen til en assosiativ array i PHP

Ytelsen til en assosiativ array i PHP


PHP er et server-basert språk for å lage interaktive webapplikasjoner og gjengivelse brukerinnhold på forespørsel. Den støtter en rekke datainnsamling klasser i sitt utvalg konstruere, inkludert indeksert arrays og assosiative matriser. Med et stort antall brukere, kan ytelsen til koden din bli et problem. Selv assosiative matriser ikke krever betydelig CPU overhead, de trenger mer minne til å lagre i RAM som programmet kjører.

indeks~~POS=TRUNC Arrays

En standard indeksert array i PHP og andre språk inneholder en rekke etterfølgende verdiindekser tilordnet dataverdier. En dataverdi nås ved å referere til indeksen, eller posisjon i rekken.

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

Tilgang til element "$ my_array [0]" returnerer verdien 1. indekserte arrays er best for lagring og bruk av strukturerte data. Det ville være ineffektivt å gjøre følgende, som det ville fylle hullene i indeksverdier, tar opp en svært stor mengde minne:

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

assosiative Arrays

I motsetning til indekserte matriser, PHP assosiative matriser inneholde en rekke nøkkelverdi-par. Dataverdiene er tilgjengelige ved å referere til den nøkkelen som kan enten være en unik streng eller numerisk verdi. Den ineffektive eksempelet ovenfor kan bedre skrevet som en assosiativ array:

$ My_array (0 => 5, 13 => 5, 75 => -4);
$ My_array ( "one" => 1, "to" => 2, "sytten" => 17);

CPU ytelsen

PHP er optimalisert for behandling av strenger. Å ha en streng som nøkkelen for en assosiativ array produserer ikke mye overhead. Når du åpner et element i en assosiativ array i PHP, er rekken ikke søkte fra begynnelse til slutt for å finne ut om noen av tastene kamp. I stedet, en nøkkel i en assosiativ array tilordnet en indeksverdi, uten ekstra overhead i lookup tid over indekserte arrays.

minneytelse

Siden PHP assosiative matriser lagre en nøkkelverdi-par, i motsetning til bare en verdi, de krever ekstra minne overhead, plass programmet bruker i RAM mens du kjører, sammenlignet med indekserte arrays. Denne ekstra minne er normalt ubetydelig med mindre du bruker veldig store matriser. I dette tilfelle kan det være fornuftig å dele opp svært store matriser inn i en undergruppe av matriser som kan benyttes etter behov.