Jag höll på mycket med traditionell asp och visual basic 6.0 för några år sedan. Försöker nu komma igång med asp.net. Jag har laddat ner Visual Web Developement 2005 Express Edition och förvånas över alla färdiga funktioner som finns (login, registrering) samt att allt är integrerat (t.ex. databashantering). Eftersom då jag senast programmerade traditionell asp så fick man göra allt själv (i anteckningar) så blir jag lite misstänksam. Är dessa integrerade funktioner användbara eller något man bör passa sig för? Är de förenade med sämre prestanda? Detta eviga tjat om prestanda? Men Johan så där sa man för 10år sedan också , "vi köper en snabbare server så löser vi problemen". men så vet nog de flesta som har erfarenhet av enterprisesystem att det inte löser något att ha snabbare maskiner. :-) det var det jag menade med att man inte behöver optimera sina for loopar men man ska känna till vad som kan sänka en asp.net app. kontra det som sänkte de klassiska asp sidorna (strängkonkateneringen och ofta usel implementation av databasanrop etc). Ja det var tiden... Prestanda och färdiga funktioner...
Tack på förhand! Sv: Prestanda och färdiga funktioner...
Vi lever i år 2007 ;-)
Idag är datorer så snabba och billiga att prestanda knappt behöver nämnas i vanliga traditionella applikationer, en annan sak om man sitter med kritiska transaktionssystem med flera hundra eller kanske to m flera tusen användare.
Så du kan ta det lugnt :-) Det kommer gå fin fint...
Strunta i att tänk prestanda, 80% av tiden du lägger ner om du utgår från att allt skall vara prestandavänligt är oftast slöseri med tid...
om ex 1-100 personer skall använda ditt system varför slösa tid och optimera det för 1000 användare?
Ett stort misstag många gör...
happy coding!!!Sv:Prestanda och färdiga funktioner...
Det är aldrig fel att tänka på prestandan när man utvecklar system. men i asp.net har du inte samma typ av prestanda problem som man hade i klassisk asp. Du har tex inte problemet med att stränghanteringen är långsam och i och med det rendering av sidorna går segt.
Du behöver inte heller tänka på att spara några cykler på att använda tex for(int i=0; i<length;i++) istället för for each, det är antagligen den typ av prestanda förbättringar som Johan menar man ska undvika.
Det finns dock lite falskhalsar man ska känna till och undvika:
1. Dataset är drygt dubbelt så tidskrävande som sqlReader och customobjekt i ILists.
2. förstora viewstate kan ställa till problem,
3. Serializeringar kan vara tunga, skriv custom serialiserare.
Mer tips om asp.net performance hittar du här:
http://msdn.microsoft.com/msdnmag/issues/05/01/ASPNETPerformance/
http://msdn2.microsoft.com/en-us/library/5dws599a.aspx
Känner man till detta så behöver bra kod inte betyda att man anstränger sig för att optimera utan man gör det på rutin. Sv: Prestanda och färdiga funktioner...
Nu råkar det ju vara så att den tid du pratar om så använde man inte OO för det var för slött pga alla chatty calls...
Där man kodade varje app som om de vore en drivrutin där det inte fanns så mkt till prestanda i datorerna heller...
Coola var faktiskt att de lyckades få Amigans 8Bits ljud o köras som 16bit... ryssarna var grymma på den tiden... men det var då man inte kunde justera hårdvaran utan fick göra det i mjukvaran...
De var fasen inte dumma alltså...
Idag har man problem med dagens kända algoritmer för de knäcks för fort, det tar inte flera månader nu utan bara någon dag om ens det... Så bara där märker vi hur datorerna effektiviserats.
Sedan menade jag inte koda kass köp bättre dator typ...
Utan tänk design före tänk prestanda när man kodar, det gör att prestanda optimering om det behövs blir både enklare och billigare i senare skede än slösa tid på det med en gång helt i onödan.
Ibland kan det räcka att köpa lite extra minna för 500kr istället för spendera 100h utv-tid på att lösa en sak för att man snålar på hårdvara. Missförstå mig inte heller... Vissa system kräver bra prestanda men av erfarenhet under mina 12 år som ent-utvecklare så vet jag att teoretisk prestanda tänkande är inte alltid samma i praktiken. Ibland kan optimeringar även göra systemet mycket långsammare...
Så... Koda snyggt, bra och efter en design... YAGNI och KISS som grund... När itterationen är klar, kör prestanda test (sist i ledet typ) uppfyller min kod måtten enligt kraven? JA eller NEJ... om ja... grattis du har sparat ca 80% utv-tid... Om nej... ok. vart är problemet? oj min Modular-Executor-Super-Ultra-Plus ger en call-time på hela 20 sec... Aaaa min löskopplade Mojo-Doer... hade vist en loop som inte avslutades i tid... justera i 5 min. pang klar... o man har sparat 79% av sin utv-tid...
Tänker man prestanda blir det lätt ett komplex, hårdkopplat system med väldigt stor risk för spagetti-kod. Ett system som sedan blir för komplicerat att rätta, fixa och justera... Bygger man efter design blir det både flexiblare, lättare att förstå och enklare att både modifiera och optimera m.m... och det kommer lev längre...
>Känner man till detta så behöver bra kod inte betyda att man anstränger sig för att optimera utan man >gör det på rutin.
Helt sant... men det är att inte tänka prestanda det är att berst-practises ligger i ryggraden.
Jag kör foreach före for(....) i många fall även om en for i vissa fall (varierar faktiskt) är långsammare.
Detta för att det går fortare att nå mitt mål med foreach syntax än for(..) loop. Kör jag test och märker att min for each är långsam ändrar jag den då till for(...) är den inte långsam vann jag tid...
Det finns många böcker och statistisk på just detta... Code Complete är en bok jag kan rekommendera. nästen ett måste att ha läst, samma som med Secure Code... ottroligt bra böcker... MS Press bästa faktiskt... Om man får ge dem lite reklam i sammanhanget...
Mvh Johan
.Net konsult - HiQ AB
www.johannormen.com/blogSv:Prestanda och färdiga funktioner...
och visst ibland (rätt ofta) är det billigare med nån minnes kapsel.
hehe du nämde amigan man blir ju nästan nostalgisk, då optimerade man ju på klockcykelnivå det var tider det , för att inte nämna c64 när man timeade efter rasterstrålens position :)
men som tur är slipper vi ju sådan nittygritty kodning nu (även om det kan va kul ibland)Sv: Prestanda och färdiga funktioner...
Shit vad man fick justera tonhuvudet på bandspelaren :-)
Men oftast fick man ju igång sina spel oxå ;)