What are your opinions about what techniques should I use in the performance analysis and optimization of every application done in .NET technologies?
Also what kind of debugging/tracing techniques do you know that can be powerful?
Do you think that at large scale projects is necessary to have custom debugging/diagnostic classes?
Do you recommend the use of application profilers or any else third party app?
Another concern quite related: How can I obtain the time taken by a method to be executed ?
This is language-agnostic advice. If you get some experience doing performance tuning of existing apps, especially larger ones, you may learn what I have learned. The biggest performance killer is over-design: too many layers of abstraction, notification-driven processing, and such. The problem is that the little things that are supposed to make your life easier, in the abstract, end up sucking you into large cycle-wastage without your knowing it.