Farhan had a good answer, +5 from me. The best tool depends on exactly what you are trying to accomplish. In general it is a good practice to use different analysis tools to examine your software in different ways. You should also consider the often overlooked
CLRProfiler[
^] from Microsoft. It is a great tool for determining what the Garbage Collecter is doing so you can make garbage collection more efficient thereby increasing speed of execution. It will also help with the detection of memory leaks.