loathsome Skrevet 14. oktober 2007 Del Skrevet 14. oktober 2007 Husker meg og en kompis kjørte en test på dette for et par måneder siden, og da kom faktisk XML ut raskere en MySQL. Tror vi la til en million tabeller, og så fjernet de eller noe slikt Er i hvert fall så liten ytelsesforskjell at du ikke trenger å bry deg om det. Om du absolutt vil teste selv, så er jo det ikke vanskelig å kjøre en benchmark eller tre selv. Lenke til kommentar
MC2 Skrevet 15. oktober 2007 Del Skrevet 15. oktober 2007 Tip of the day: XML-RPC (Detaljene og mulighetene med det var i alle fall nytt for meg helt til i går kveld.) Forresten, det med interfaces. Jeg fant mer eller mindre ut at det gir mest mening i språk hvor man må kompilere selv (java) siden det da gir en feilmelding ved kompilering. I php er det ikke så nødvendig siden man har funksjoner som method_exists. Riktig? Lenke til kommentar
Rabbid Skrevet 15. oktober 2007 Del Skrevet 15. oktober 2007 (endret) Så det er helt greit å ha litt avansert informasjon i en fil som må leses for hver eneste gang siden lastes? Å ha XML inne i koden må vel være enda raskere (er kun for lesing, skal ikke skrive data) (Eksemple hentet fra PHP.net) <?php $xmlstr = <<<XML <?xml version='1.0' standalone='yes'?> <movies> <movie> <title>PHP: Behind the Parser</title> <characters> <character> <name>Ms. Coder</name> <actor>Onlivia Actora</actor> </character> <character> <name>Mr. Coder</name> <actor>El ActÓr</actor> </character> </characters> <plot> So, this language. It's like, a programming language. Or is it a scripting language? All is revealed in this thrilling horror spoof of a documentary. </plot> <great-lines> <line>PHP solves all my web problems</line> </great-lines> <rating type="thumbs">7</rating> <rating type="stars">5</rating> </movie> </movies> XML; ?> Får ikke til det jeg ønsker med flerdimensjonale arrays, så jeg prøver ut dette. Endret 15. oktober 2007 av IQ Lenke til kommentar
Martin A. Skrevet 15. oktober 2007 Del Skrevet 15. oktober 2007 (endret) Den der skrevet om til array blir vel noe ala: $array = array( 'movie' => array( 'title' => 'PHP: Behind the Parser', 'characters' => array( 0 => array( 'name' => 'Ms. Coder', 'actor' => 'Onlivia Actora', ), 1 => array( 'name' => 'Mr. Coder', 'actor' => 'El ActÓr', ), ) 'plot' => 'So, this language. It's like, a programming language. Or is it a scripting language? All is revealed in this thrilling horror spoof of a documentary.', 'great-lines' => array( 0 => 'PHP solves all my web problems', ), 'rating' => array( 'thumbs' => 7, 'stars' => 5, ), ), ); Endret 15. oktober 2007 av M4rTiN Lenke til kommentar
Rabbid Skrevet 15. oktober 2007 Del Skrevet 15. oktober 2007 (endret) Men det er ikke det jeg skal ha om til array.. Er noe ala dette:<modules directory="/"> <module>MODULE_LATEST_USERS</module> <module>MODULE_INFO</module> <module>MODULE_LOG_IN</module> </module> Endret 15. oktober 2007 av IQ Lenke til kommentar
Martin A. Skrevet 15. oktober 2007 Del Skrevet 15. oktober 2007 Det blir vel forsatt noe av det samme $array = array( 'modules' => array( 0 => array( 'directory' => '/', 'type' => 'MODULE_LATEST_USERS', 'info' => 'MODULE_INFO', 'log_in' => 'MODULE_LOG_IN', ), ), ); Lenke til kommentar
Rabbid Skrevet 15. oktober 2007 Del Skrevet 15. oktober 2007 Det blir vel forsatt noe av det samme $array = array( 'modules' => array( 0 => array( 'directory' => '/', 'type' => 'MODULE_LATEST_USERS', 'info' => 'MODULE_INFO', 'log_in' => 'MODULE_LOG_IN', ), ), ); Prøvde dette, men jeg brukte så lang tid å søke igjennom. Jeg skal hente inn alle moduler fra gitt directory (som skal bestemmes av hvilken URL man er på), noen som har noen gode ideer på å hvordan jeg kan oppnå dette? (skal også ha wildcard-directory som "/user/*") Lenke til kommentar
MC2 Skrevet 16. oktober 2007 Del Skrevet 16. oktober 2007 Tip of the day: 40 Tips for optimizing your php Code Lenke til kommentar
jorgis Skrevet 16. oktober 2007 Del Skrevet 16. oktober 2007 Tip of the century: Don't optimize. Yet. Lenke til kommentar
Gjest Slettet+6132 Skrevet 16. oktober 2007 Del Skrevet 16. oktober 2007 Den artikkelen der mangler bevis, jeg ser bare en haug med påstander. If a method can be static, declare it static. Speed improvement is by a factor of 4. str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4 Incrementing a global variable is 2 times slow than a local var. Says who? Im in ur head givin u lies! Lenke til kommentar
loathsome Skrevet 16. oktober 2007 Del Skrevet 16. oktober 2007 Tip of the century: Don't optimize. Yet. Elaborate, please? Lenke til kommentar
MC2 Skrevet 16. oktober 2007 Del Skrevet 16. oktober 2007 Det har vært oppe før, og jorgis har et poeng. Det er oftest lite poeng å bruke tid på å optimalisere kode siden det mest sannsynlig ligger en flaskehals som skyldes "uperfekt"/dårlig programmering. Ja, også kjedelig at lista ikke har noen referanser eller eksempler. Lenke til kommentar
Loomy Skrevet 16. oktober 2007 Del Skrevet 16. oktober 2007 Husker meg og en kompis kjørte en test på dette for et par måneder siden, og da kom faktisk XML ut raskere en MySQL. Tror vi la til en million tabeller, og så fjernet de eller noe slikt Er i hvert fall så liten ytelsesforskjell at du ikke trenger å bry deg om det. Og med tabeller regner jeg med du mener rader? Uansett er det ikke tvil i mitt hjerte om at MySQL kommer til å være raskere enn XML i de fleste relevante situasjoner. Kanskje jeg må bench'e litt på det selv.. hmm.. fint kveldsprosjekt. Lenke til kommentar
Peter Skrevet 16. oktober 2007 Del Skrevet 16. oktober 2007 (endret) http://digg.com/programming/40_Tips_for_op...g_your_php_Code Les kommentarene, de foreslår å alltid bruke foreach for arrayer istedenfor for + count, noe som er motsatt av det jeg har lest fra en del folk her. Noen som har testet ? Endret 16. oktober 2007 av Nazgul Lenke til kommentar
Ernie Skrevet 16. oktober 2007 Del Skrevet 16. oktober 2007 (endret) Husker meg og en kompis kjørte en test på dette for et par måneder siden, og da kom faktisk XML ut raskere en MySQL. Tror vi la til en million tabeller, og så fjernet de eller noe slikt Er i hvert fall så liten ytelsesforskjell at du ikke trenger å bry deg om det. Og med tabeller regner jeg med du mener rader? Uansett er det ikke tvil i mitt hjerte om at MySQL kommer til å være raskere enn XML i de fleste relevante situasjoner. Kanskje jeg må bench'e litt på det selv.. hmm.. fint kveldsprosjekt. Jeg har min store tvil om at det skal stemme. Primært vil en MySQL-løsning ha en stor ulempe i form av forsinkelse mot serveren. http://digg.com/programming/40_Tips_for_op...g_your_php_Code Les kommentarene, de foreslår å alltid bruke foreach for arrayer istedenfor for + count, noe som er motsatt av det jeg har lest fra en del folk her. Noen som har testet ? I følge en kjapp test lokalt kan det umulig stemme, iallfall ikke for de dataene jeg bruker. Hos meg går det nesten 2 ganger raskere med en for-løkke. Kjører forøvrig PHP 5.2.4 og tester med arrayer med 10000 elementer á 26 tegn. Red.: La til kode <?php echo "<pre>For:\n"; for ($i = 0; $i < 10000; $i++) $array[] = 'abcdefghijklmnopqrstuvwxyz'; $key = array_keys($array); for ($j = 0; $j < 5; $j++) { $start = microtime(true); for ($k = 0; $k < 100; $k++) { $size = sizeof($key); for ($i=0; $i<$size; $i++) {} } $end = microtime(true); echo ($end - $start)."\n"; } echo '</pre>'; ?> <?php echo "<pre>Foreach:\n"; for ($i = 0; $i < 10000; $i++) $array[] = 'abcdefghijklmnopqrstuvwxyz'; for ($j = 0; $j < 5; $j++) { $start = microtime(true); for ($k = 0; $k < 100; $k++) { foreach ($array as $var) {} } $end = microtime(true); echo ($end - $start)."\n"; } echo '</pre>'; ?> Endret 16. oktober 2007 av Ernie Lenke til kommentar
jorgis Skrevet 16. oktober 2007 Del Skrevet 16. oktober 2007 Tip of the century: Don't optimize. Yet. Elaborate, please? The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet. eller for å sitere O store Knuth: We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%. Optimisering er noe en selvfølgelig bør ha et øye på under designfase (en velger ikke sqlite som backend til en side som Digg, f.eks), men mikro-optimalisering av typen "echo er raskere enn print, og flere argumenter til echo er raskere enn strengkonkatenering" er bare tøys og tull. Når en kommer utover i implementasjonsfasen og finner ut at ting ikke går sånn som de skal, er det som oftest snakk om en eller flere flaskehalser som relativt raskt lar seg løse opp i. Om en selv etter å rydde opp i flaskehalsene vil ha mer ytelse, da kan en begynne med mikro-optimalisering, men da må en først bevise at mikro-optimalisering vil gi bedre resultater til en lavere pris enn det vil koste å hive mer hardware på problemet. Lenke til kommentar
Peter Skrevet 17. oktober 2007 Del Skrevet 17. oktober 2007 (endret) Jeg har min store tvil om at det skal stemme. Primært vil en MySQL-løsning ha en stor ulempe i form av forsinkelse mot serveren. http://digg.com/programming/40_Tips_for_op...g_your_php_Code Les kommentarene, de foreslår å alltid bruke foreach for arrayer istedenfor for + count, noe som er motsatt av det jeg har lest fra en del folk her. Noen som har testet ? I følge en kjapp test lokalt kan det umulig stemme, iallfall ikke for de dataene jeg bruker. Hos meg går det nesten 2 ganger raskere med en for-løkke. Kjører forøvrig PHP 5.2.4 og tester med arrayer med 10000 elementer á 26 tegn. Red.: La til kode <?php echo "<pre>For:\n"; for ($i = 0; $i < 10000; $i++) $array[] = 'abcdefghijklmnopqrstuvwxyz'; $key = array_keys($array); for ($j = 0; $j < 5; $j++) { $start = microtime(true); for ($k = 0; $k < 100; $k++) { $size = sizeof($key); for ($i=0; $i<$size; $i++) {} } $end = microtime(true); echo ($end - $start)."\n"; } echo '</pre>'; ?> <?php echo "<pre>Foreach:\n"; for ($i = 0; $i < 10000; $i++) $array[] = 'abcdefghijklmnopqrstuvwxyz'; for ($j = 0; $j < 5; $j++) { $start = microtime(true); for ($k = 0; $k < 100; $k++) { foreach ($array as $var) {} } $end = microtime(true); echo ($end - $start)."\n"; } echo '</pre>'; ?> Dette er faktisk veldig interessant, for jeg tok koden din og c/p rett inn i to forskjellige filer som jeg kjørte lokalt her, og her er resultatene: For:0.127959012985 0.127472162247 0.127819061279 0.127547979355 0.126756906509 Foreach: 0.109839200974 0.109850883484 0.11278796196 0.109612941742 0.109309911728 Jeg kjørte også filene et par ganger hver bare for å være helt sikker, og resultatet var det samme hver gang. Foreach var raskest. PHP Version 5.2.3 på windows server 2003 med rimelig hissig hw. Endret 17. oktober 2007 av Nazgul Lenke til kommentar
MC2 Skrevet 17. oktober 2007 Del Skrevet 17. oktober 2007 På min lokale maskin (som ikke er så imponerende) er det tvert om: For: 0.233057022095 0.218636035919 0.219330787659 0.331099033356 0.264595985413 Average: 0.253343772888 Foreach: 0.327601909637 0.316066026688 0.32489991188 0.417309999466 0.289937973022 Average: 0.335163164139 Kjører php 5.2.1 på Ubuntu Lenke til kommentar
Martin A. Skrevet 17. oktober 2007 Del Skrevet 17. oktober 2007 Spennende. Får teste dette lokalt (med bad-ass hardware (AMD X2 5600+, OCZ DDR2) når jeg kommer hjem. Holder en liten knapp på at det er foreach() som kommer best ut. Lenke til kommentar
Peter Skrevet 17. oktober 2007 Del Skrevet 17. oktober 2007 (endret) For:0.092650890350342 0.095371961593628 0.093120098114014 0.093245983123779 0.092675924301147 Foreach: 0.11818599700928 0.1181640625 0.11931395530701 0.11926007270813 0.11843800544739 For:0.534287 -0.530403 0.583892 -0.859065 0.483694 Foreach: 0.138005 -0.1122 0.636684 -0.09142 -0.140701 (Aner ikke hvorfor disse tallene er helt bogus, men serveren er urgammal og treig) EDIT: Erindrer svakt at microtime elns. ble endret, slik at man slapp å gjøre noen ekstra steg for å få microsekunder. For:0.127885103226 0.126641988754 0.127236843109 0.126394987106 0.127102136612 Foreach: 0.110074996948 0.108583927155 0.108484983444 0.107733011246 0.108590126038 Må få flere tester, sørg for å poste OS, så langt tyder ting her på at det er windows vs linux som spiller inn. Endret 17. oktober 2007 av Nazgul Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå