De prestaties van een associatieve array in PHP

De prestaties van een associatieve array in PHP


PHP is een server-gebaseerde taal voor het maken van interactieve webapplicaties en renderen gebruiker inhoud op aanvraag. Het ondersteunt een groot aantal dataverzameling klassen in zijn array concept, met inbegrip van geïndexeerde arrays en associatieve arrays. Met een groot aantal gebruikers, kunnen de prestaties van uw code een probleem geworden. Hoewel associatieve arrays niet significant CPU-overhead nodig hebben, hebben ze nodig meer geheugen op te slaan in het RAM als uw programma wordt uitgevoerd.

geïndexeerde Arrays

Een standaard geïndexeerde array in PHP en andere talen bevat een reeks van opeenvolgende waarde indexen toegewezen aan data waarden. Een gegevenswaarde wordt benaderd door te verwijzen naar de index of positie in de array.

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

Toegang tot het element "$ my_array [0]" de waarde 1. geïndexeerde arrays zijn het beste voor het opslaan en gebruiken gestructureerde data terug. Het zou inefficiënt om het volgende te doen, omdat het in de lacunes in de index waarden zou vullen, toegang tot een zeer grote hoeveelheid geheugen:

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

associatieve arrays

In tegenstelling tot geïndexeerde arrays, PHP associatieve arrays bevatten een aantal key-waarde paren. De gegevenswaarden worden benaderd door te verwijzen naar de sleutel die ofwel een unieke tekenreeks of numerieke waarde. Het inefficiënte bovenstaande voorbeeld kunnen beter worden geschreven als een associatieve array:

$ My_array (0 => 5, 13 => 5, 75 => -4);
$ My_array ( "een" => 1, "twee" => 2, "zeventien" => 17);

CPU-prestaties

PHP is geoptimaliseerd voor de verwerking van tekenreeksen. Een tekenreeks als sleutel voor een associatieve array produceert niet veel overhead. Bij gebruik van een element in een associatieve array in PHP, is de matrix niet gezocht van begin tot einde te bepalen of een van de sleutels spel. In plaats daarvan, een sleutel in een associatieve array toegewezen aan een indexwaarde, zonder extra overhead in lookup keer over geïndexeerde arrays.

geheugenprestaties

Sinds PHP associatieve arrays slaan een key-waarde paar, in tegenstelling tot alleen een waarde, ze vereisen extra geheugen overhead, ruimte programma gebruikt in het RAM tijdens het hardlopen, in vergelijking met geïndexeerde arrays. Dit extra geheugen is normaal gesproken te verwaarlozen, tenzij je gebruik van zeer grote arrays. In dit geval kan het verstandig zijn te splitsen zeer grote arrays in een subset van arrays die toegankelijk als nodig.