Что я использую, независимо от языка, это Stackshots . То, что вы хотите выяснить, - это то, какие строки кода учитывают самые большие доли времени выполнения. (Обратите внимание, что эти доли обычно составляют более 100%.) Такая строка, если ее избежать, сократила бы время выполнения на эту величину, поэтому любая такая строка является хорошим кандидатом для оптимизации.
Доля времени, которое занимает линия, не должна быть известна с высокой точностью. Фактически, если я возьму образцы стека вручную, как только я увижу строку кода, отображаемую более чем в одном образце, я знаю, что это занимает много времени. Чем он расточительнее, тем меньше образцов нужно для его выявления.