The basic strategy for isolating bottlenecks is to measure the time it takes to execute part or all of program and then change the code in ways that add or subtract work at a single point in the graphics pipeline. If changing the amount of work at a given stage does not alter performance appreciably, that stage is not the bottleneck. If there is a noticeable difference in performance, you have found a bottleneck.