webForumDet fria alternativet

Hitta prestandabuggar i .NET?

.NET

6 svar · 531 visningar · startad av CatZ

Medlem sedan jan. 20022 440 inlägg
Frågan#1

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.

Länkar, tips, idéer mottages tacksamt.

Medlem sedan dec. 19996 522 inlägg
#2

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.

Medlem sedan jan. 20022 440 inlägg
#3

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.

Medlem sedan jan. 20022 440 inlägg
#4

Mer förslag?

Medlem sedan aug. 20003 575 inlägg
#5

Kör Code Analysis i VS.NET Team System alternativt FxCop och leta efter perfomance tips.
Generellt sträva efter att aldrig få några varningar.

Kolla om det kastas några exceptions som man bara struntar i, extremt prestandakrävande.

Sitter och läser http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756 som jag tycker är extremt bra. (Lite offtopic men boken handlar om hur man skriver bra kod, samt namnger den rätt, författarna är de som ligger bakom .NET Framework och framstående systemdesigners på Microsoft).

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.

Medlem sedan dec. 19996 721 inlägg
#6

CatZ skrev:

Mer förslag?

Loggning med log4net, gärna integrerad mha Castle Logging Facility (suveränt framework, urkass dokumentation)

http://logging.apache.org/log4net/
http://www.castleproject.org/container/facilities/v1rc3/logging/index.html

Medlem sedan jan. 20022 440 inlägg
#7

emission skrev:

Loggning med log4net, gärna integrerad mha Castle Logging Facility (suveränt framework, urkass dokumentation)

http://logging.apache.org/log4net/
http://www.castleproject.org/container/facilities/v1rc3/logging/index.html

Nu kommer jag sitta i evigheter och pilla med det här :( Det var lösningen på båda mina problem, gratis och föbannat omständigt!! :stud

Tack för den passningen :bla §e

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)