When tuning performance in a web
application ... easiest profiling
method is to log the start time and
end time for each method
Hold it right there :-)
Tuning (i.e. finding ways to make it faster) and measuring (seeing how long things take) are not the same thing.
What measuring is good for is quantifying the improvement you get after fixing something.
For finding out what to fix, the simplest technique is sampling the stack, because any line of code costing X% of time is on the stack during that time, whether it is a tight loop, a call for I/O, or a mid-level function/method call.
What's more, if X% is big enough to bother with, not many samples are needed to find it.
(Notice, I said find, not measure.)
As soon as any line of code appears a second time, if you can optimize it, you will get a good speedup, guaranteed.
The worse the problem is, the fewer samples you need. In the limit, you can diagnose an infinite loop in one sample.
There's plenty more discussion of this.