Jag sitter här med en extremt långsam .NET applikation som ska skrivas om från grunden snart och undrar vad som är best practice för att kontinuerligt hitta prestandaproblem redan från start. Det är ingen mening att lägga krut på att försöka förbättra prestandan som det är nu eftersom allting ska skrivas om från grunden av mig.
Något man kan göra är ju att skriva start - slut till en textfil men det känns lite sådär. Logfiler används nu men jag tänker skriva till eventloggen så att Microsofts System Management Server kan fånga upp alla tänkbara problem på servern som ska köra applikationen. Då kan man ju skicka kritiska fel, varningar och annat. Men jag vill även kunna mäta prestandan eftersom prestanda kommer vara av största vikt när applikationen senare sätts i produktion.
ANTS Profiler är ett trevligt verktyg, analysverktyg för kodkomplexitet (devMetrics etc.), sql-profiler för undersöka hur databastrafiken går (pooling, frågor etc). Logga kritiska fel antingen i application log, eller skapa en egen hanterare som kanske sparar till textfil, mailar ansvarig osv.
ANTS Profiler är kalas, det kan helt klart vara värd sitt pris! Angående loggning så blir det nog alla tre alternativen. textfil och mail för min skull och application log för kundens skull. Det är en applikation som kommer användas inom industrin och jag vet att några av kunderna använder Microsoft SMS för övervakning. Kritiska fel måste dyka upp där så det inte blir produktionsstopp.
Här står det bland annat att man ska ha en hanterare för Exceptions som är oväntade eller som man inte har inbyggd hantering av. Så bygg inte in det i systemet utan gör en utomstående modul som sköter detta ett bra exempel i boken var att om något Microsoft Office program slutar fungera/något går fel skickas felet till felhanteraren och sedan startas programmet om.
Med unittests kan man få se vad enstaka delar tar i tid på ett enkelt sätt och tweaka dom snabbare och bara köra om testet.
Men som sagt tidigare profilers är extremt bra, speciellt ants som ger en snabb överblick.