[php] snelheid object en array

Pagina: 1
Acties:

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Wat is nou sneller, een object of een array?

Bij het object moet je vanuit gaan dat ik NIET een class bedoel, dus mijn vraag is in principe welke van onderstaande twee voorbeelden sneller is (en dan ook in de manier van aanroepen later in de code):
PHP:
1
<?$bla->hoi = "nummer1";$bla->doei = "nummer2";?>


PHP:
1
<?$bla['hoi'] = "nummer1";$bla['doei'] = "nummer2";?>

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Test het....

Persoonlijk denk ik niet dat het uit maakt

Programmer - an organism that turns coffee into software.


Verwijderd

ddc: Wat is nou sneller, een object of een array?
Object zal bijna zeker langzamer zijn, hoeveel is meten.
Bij het object moet je vanuit gaan dat ik NIET een class bedoel.
:o Ah, een object zonder class! Dat is nog eens echt typeless werken. >:)
(Dus: Wat bedoel je? :?)

Of het heel belangrijk is wat sneller is, is een andere vraag...

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Krijg nou wat, Arien is er weer :)
Welkom!
Arien: :o Ah, een object zonder class! Dat is nog eens echt typeless werken. >:)
(Dus: Wat bedoel je? :?)
Ik heb in het voorbeeld al aangegeven wat ik bedoel. En het is idd niet echt nuttig om het in een object te doen, maar misschien is het wel sneller ofzo, daarom vraag ik het :)
Of het heel belangrijk is wat sneller is, is een andere vraag...
Denk ook niet dat er zo heel veel verschil in zit, maar ben gewoon benieuwd :)

Verwijderd

ddc: Welkom!
Dank. :)
Ik heb in het voorbeeld al aangegeven wat ik bedoel.
Snap alleen niet hoe je een object kan hebben dat geen type / class heeft. :?

  • Grum
  • Registratie: Juni 2001
  • Niet online
Ik heb net een dood simpele minitest gedaan en het scheelt 50% :)

[edit]

Moet ik het wel goed zeggen als gewone vars 100 is dan is arrays 150 en classes 210 in mijn tests :)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

<afschuwelijk OT>
Just passing through...
mag hopen van niet :)
wb Arien ;)
</ot>

Doet iets met Cloud (MS/IBM)


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op donderdag 28 maart 2002 11:52 schreef Grum het volgende:
Ik heb net een dood simpele minitest gedaan en het scheelt 50% :)
Heb je wat getallen?

Hoe heb je getest? En wat is sneller?

* LuCarD heeft geduld.... en wacht nog ff een paar minuten...

* LuCarD is vrij... :)

Programmer - an organism that turns coffee into software.


  • Grum
  • Registratie: Juni 2001
  • Niet online
check me post voor iets meer info .. zo ff me filetje opschonen en posten hier :)

[edit]

Ik ben ook maar aan het werk hier ;)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Theoretisch geneuzel:
Een array is een lijst van objecten.
In principe doen jouw twee voorbeelden daarom ook exact hetzelfde.

Waar wil je heen met deze vraag?

>:)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Ik mag toch hopen dat array's sneller zijn dan objecten. Al is het alleen maar omdat de array's veel simpeler van interne opzet zijn dan objecten.

Waar je zoiets het meest zult gebruiken lijkt me dan bij de fetch_row/array()'s vs fetch_object()'s ?
(hier gebruik ik eigenlijk altijd fetch_array of fetch_row, waarom zou ik een tabel-row (min of meer een array) in een object willen? :) )

Of wilde je echt objecten meegeven aan functies en dergelijke? :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Ok .. even niet letten op de hoge ranzigheid van de code :)

Sorry voor de layout verneuking :+
PHP:
1
<? $theRuns = 100000; //// First time the loop :)// ob_start();$theStartTime = microtime();for ($i = 0; $i < $theRuns; $i++)     ;    $theEndTime = microtime();ob_end_clean();$theForTime =  join('',array_reverse(explode(' ',substr($theEndTime,1)))) - join('',array_reverse(explode(' ',substr($theStartTime,1)))); //// Then time the class// ob_start();$theStartTime = microtime(); class Container { var $_1, $_2; }for ($i = 0; $i < $theRuns; $i++){    $theTmpVar = new Container();    $theTmpVar->_1 = 'val';    $theTmpVar->_2 = "val";    print $theTmpVar->_1 . " " . $theTmpVar->_2;    unset($theTmpVar);}     $theEndTime = microtime();ob_end_clean(); $theClassTime = join('',array_reverse(explode(' ',substr($theEndTime,1)))) - join('',array_reverse(explode(' ',substr($theStartTime,1)))) - $theForTime; //// Nummed arrays// ob_start();$theStartTime = microtime();for ($i = 0; $i < $theRuns; $i++){    $_ = array();    $_[] = 'val';    $_[] = "val";    print $_[0] . " " . $_[1];    unset($_);}     $theEndTime = microtime();ob_end_clean(); $theNummedArrayTime = join('',array_reverse(explode(' ',substr($theEndTime,1)))) - join('',array_reverse(explode(' ',substr($theStartTime,1)))) - $theForTime; //// Named arrays// ob_start();$theStartTime = microtime();for ($i = 0; $i < $theRuns; $i++){    $_ = array();    $_['_1'] = 'val';    $_['_2'] = "val";    print $_['_1'] . " " . $_['_2'];    unset($_);}     $theEndTime = microtime();ob_end_clean(); $theNamedArrayTime = join('',array_reverse(explode(' ',substr($theEndTime,1)))) - join('',array_reverse(explode(' ',substr($theStartTime,1)))) - $theForTime; //// Don't forget the normal vars// ob_start();$theStartTime = microtime();for ($i = 0; $i < $theRuns; $i++){    $_1 = 'val';    $_2 = "val";    print $_1 . " " . $_2;    unset($_1);    unset($_2);}     $theEndTime = microtime();ob_end_clean(); $theVarTime = join('',array_reverse(explode(' ',substr($theEndTime,1)))) - join('',array_reverse(explode(' ',substr($theStartTime,1)))) - $theForTime; //// Print :P// printf("<pre>For         : %.10f\nClass       : %.10f\nNamed Array : %.10f\nNummed Array: %.10f\nVar         : %.10f\n", $theForTime, $theClassTime, $theNamedArrayTime, $theNummedArrayTime, $theVarTime);?>

hier kwam uit bij mij: http://erik.powerdns.com/got/test3.php
code:
1
2
3
4
5
For    : 0.1989229918
Class    : 1.4510730505
Named Array : 1.0801399946
Nummed Array: 0.9782810211
Var    : 0.6460329294

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Wat een ranzige code :+

Overigens weet ik niet of het gebruiken van een array met de naam $_ wel zo verstandig is, in veel unix omgevingen is dat toch een var die de huidig shell representeerd?

  • Grum
  • Registratie: Juni 2001
  • Niet online
was net even aan het perlen ... vandaar ;)

maar et zou nix moeten uitmaken in php ;)

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 27-08 21:32
Op donderdag 28 maart 2002 12:19 schreef ACM het volgende:
Wat een ranzige code :+

Overigens weet ik niet of het gebruiken van een array met de naam $_ wel zo verstandig is, in veel unix omgevingen is dat toch een var die de huidig shell representeerd?
Dat is nieuw voor me, maar het lijkt me onwaarschijnlijk, want dit is de standaard 'naam' voor de vertalings-functie van GNU gettext. Ik denk niet dat ze dit hadden gedaan als het een var is die de shell presenteert.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • Grum
  • Registratie: Juni 2001
  • Niet online
eventjes de results ZONDER unsets :+
code:
1
2
3
4
5
For    : 0.1989459991
Class    : 1.2690830231
Named Array : 0.9369889498
Nummed Array: 0.8197650909
Var    : 0.4500399828

Verwijderd

ACM: Overigens weet ik niet of het gebruiken van een array met de naam $_ wel zo verstandig is, in veel unix omgevingen is dat toch een var die de huidig shell representeerd?
Het laatst uitgevoerde commando (zie 'set' in een xterm bij jou in de buurt). :)

Waarom zou het onverstandig zijn? Ze beinvloeden elkaar toch niet?

  • Grum
  • Registratie: Juni 2001
  • Niet online
en met indices (zonder unset)
code:
1
2
3
4
Var    : 0.4501580000 100
Nummed Array: 0.8169529438 181 (+81.5%)
Named Array : 0.9399740696 208 (+15.1%)
Class    : 1.2765699625 283 (+35.8%)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Zo zie je maar (LuCarD) dat dit topic nog niet eens zo oninteressant is ;) :o

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 28 maart 2002 12:58 schreef Arien het volgende:
Het laatst uitgevoerde commando (zie 'set' in een xterm bij jou in de buurt). :)
Ah dat was hem :)
Waarom zou het onverstandig zijn? Ze beinvloeden elkaar toch niet?
Ik vind het over het algemeen onverstandig om een variabele een naam te geven die in een andere taal een speciale betekenis heeft.

Tenminste vooral in talen die je af en toe nog wel es mixed zal gebruiken.
Bijvoorbeeld php vs perl vs bash.
$_ is een speciale var in bash, dus zal ik hem ook nooit in perl en php gebruiken (in perl is ie toch ook een speciale var?)

Sowieso vindt ik $_ een onhandige naam :)
Het zegt niets over zijn functie, als je dan graag een array wilt met een nietszeggende naam doe dan gewoon $array :)

Verwijderd

ACM: Ik vind het over het algemeen onverstandig om een variabele een naam te geven die in een andere taal een speciale betekenis heeft.
Geldt dat ook voor keywords? >:)
$_ is een speciale var in bash, dus zal ik hem ook nooit in perl en php gebruiken (in perl is ie toch ook een speciale var?)
Ja, dat is het equivalent van "het" in Perl:
code:
1
2
3
4
foreach (@foo) {
    print;
    # equivalent: print $_; (als in: print "het")
}


code:
1
Sowieso vindt ik $_ een onhandige naam :)

Wat is er mis met $_, $!, $@, $^A, $^W, $&, $+, $[, $], $/, etc...? :o :P

( Voor de mensen die hier nachtmerries van krijgen: use English; )

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 28 maart 2002 14:00 schreef Arien het volgende:
Wat is er mis met $_, $!, $@, $^A, $^W, $&, $+, $[, $], $/, etc...? :o :P

( Voor de mensen die hier nachtmerries van krijgen: use English; )
Hehehe :)

Maar dat bedoel ik juist, $_ heeft een speciale functie in perl, dus vind ik dat je die in php zoveel mogelijk moet mijden.

Als je ooit je code porteert naar perl, moet je ook nog es al je variabelen aflopen :)
Pagina: 1