[PHP] numerieke of string indices in arrays?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07 12:07
een heel simpel vraagje maar vind nergens het antwoord

wat zou nu sneller zijn:
PHP:
1
2
3
4
5
6
   $a = array("hello" => "value");
  
   of

   define("CONSTANT", 4);
   $a = array(CONSTANT => "value");


gaande dat alles wel 10 / 20 keer wordt gevraagd.

ik vraag omdat ik niet weet welke optimalisaties ie uitvoert.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:04
Misschien moet je ff benchmarken? :P
M'n gevoel zegt me dat numerieke subscripts sneller gaan, aangezien numerieke operaties nu eenmaal minder duur zijn dan string-operaties.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Doe het zwikkie 10.000 of 100.000 keer en meet het verschil? Optimalisatie zit vaak niet in dit soort dingen maar meer in query's of onnodig memory gebruik door continue copien te gebruiken. Er zijn genoeg mogelijkheden om het iig te test :)

[ Voor 3% gewijzigd door ripexx op 14-04-2004 15:18 ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

whoami schreef op 14 april 2004 @ 15:16:
Misschien moet je ff benchmarken? :P
offtopic:
the B-word :9

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Wat je terugkrijgt aan performance kost je weer geheugen voor de define's. Allebei een klein beetje :P

Acties:
  • 0 Henk 'm!

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07 12:07
tja wou net die "B" stadium effe niet doen ;)

op werk niet altijd tijd voor R&D ;)

[ Voor 39% gewijzigd door hobbit_be op 14-04-2004 15:24 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Is de performance belangrijk?
zoja, ga het benchmarken.
zonee, laat het lekker zitten en gebruik de variant die je het handigst vindt :)

Zelf verwacht ik dat de integer-versie wat sneller is, maar doordat het een dynamisch gecompileerde taal is loop je het risico dat de define-lookup weer de winst van je integer-versie teniet doet.

Acties:
  • 0 Henk 'm!

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07 12:07
update na benchies thuis.

het snelste is (as expected)

$t = $array[10];

gevolgd door

$t = $array['index'];

vlak daarna door

$t = $array[INDEX]; //waardat INDEX == define('INDEX', 10);

en een pak trager:

$t = $array[INDEX]; //waardat INDEX == define('INDEX', 'index');

deze laatste is gemiddeld 10x zo traag. de rest ligt dicht bij elkaar.

de lookup van de define is dus tamelijk duur (waarschijnlijk doet php een echt hash lookup die ie zowieso moest doen met een numeric).

maar een define met een string is dus best wel te vermijden. (en indexen met strings vind ik persoonlijk vies ;))

ACM: performance is altijd belangrijk vind ik als het gaat om de echte pure basic van een taal.

Acties:
  • 0 Henk 'm!

  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

[offtopic?]
De meeste applicaties zijn toch maar mickey mouse systeempjes waar als er geen database gebruikt word je sowieso niet op de performance hoeft te letten. En als je wel een database hebt dan is dat in 99,999% van de gevallen toch wel de bottle-neck.

Het enige waar je qua programma op moet letten is of je applicatie schaalbaar is. Dus als het systeem groter word moet de snelheid evenredig mee veranderen (dus niet exponentieel verlangzamen b.v.).

En als je echt snelheid wil moet je niet met een 4GL taal werken... hoewel ik denk dat je beter kan kiezen voor ontwikkelsnelheid i.c.m. meer/betere hardware.

seweso's blog

Pagina: 1