![]() |
Vi säger att vi har denna classen :
Kod:
class DB då kan man ju göra såhär Kod:
class DB Kod:
class DB Och ska man ta med PHP 5s construct och göra så att prestandan sjunker för PHP 4 användarna eller ska PHP 5 användarna få sämre prestanda ( då kör man utan PHP 5s construct |
Självklart medför ett extra funktionsanrop att (när php5 konstruktorn anropar php4 konstruktorn) att det tar längre tid, men i praktiken så är nog deta en fis i havet jämfört med vad resten av sidan tar att parsa.
Skriv ett testscript som instansierar klassen flera tusen gånger och mät tiden så har du svaret. |
hur var det nu man fick reda på execution time?
|
Citat:
|
eller varför inte microtime...
microtime hjälpen på php.net har ett bra exempel. |
Citat:
|
Gjorde lite benchmarks med dessa script
1. Kod:
<?php Kod:
<?php Kod:
execution time = 2,03122901917 seconds Kod:
execution time = 2,88538885117 seconds Det går snabbare att ge egenskaperna ett värde igen än att kalla på PHP 4 konstruktorn |
Citat:
Det du kallar slutsats är egentligen bara ett konstaterande/bevis för att något vi redan visste är sant. Diskussion: Jag valde snabbaste tiden för den snabba lösningen och den långsamaste för den långsamma. Detta ger en skillnad på 1,111 sekunder lite drygt. Detta då 100K instanser skapas. Detta ger en overhead på drygt 11 ms per instansiering. Samtidigt är ju lösningen där php5 konstruktorn anropar php4 konstruktorn lättare att underhålla eftersom förändringar bara behöver göras på ett ställe istf två. Slutsats: Man måste titta på hur mycket man tjänar i exekveringstid kontra eventuella problem med att underhålla två identiska funktioner. Personlig kommentar: Jag tvivlar på att du skapar 100K instanser per sida... och även om du gjorde det så hur stor del av hela sidans exekveringstid är då 1s? Du skall inte optimera saker som inte behöver optimeras. 11ms/anrop känns inte värt besväret med tanke på det du förlorar i underhållbarhet av koden. Möjligen är det värt det om du kansk spara flera sekunder per sida, men allvarligt talat - om du skapar ett par, tre hundra objekt per sida så känns det som något annat är fel i din design... |
Citat:
|
Citat:
Och 11ms kan du inte säga är mycket utan att säga vad det jämförs med. 11ms av något som tar 3s är lite. 11ms av något som tar 12ms är mycket. |
Alla tider är GMT +2. Klockan är nu 19:15. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson