I find in practice that even more important than figuring out which tools to use to solve your problem is figuring out what your problem is in the first place. The importance of measuring tools is often vastly under-represented in this discussion. Doing so properly almost always involves writing some custom profiling code, and having a good understanding of where resource bottlenecks are likely to be in your systems (and then ignoring that when the numbers tell you otherwise).
Comments
I find in practice that even more important than figuring out which tools to use to solve your problem is figuring out what your problem is in the first place. The importance of measuring tools is often vastly under-represented in this discussion. Doing so properly almost always involves writing some custom profiling code, and having a good understanding of where resource bottlenecks are likely to be in your systems (and then ignoring that when the numbers tell you otherwise).