Я предполагаю, что это не просто академический вопрос - вы хотели бы посмотреть, сможете ли вы заставить приложение работать быстрее.Я полагаю, вы также не будете возражать, думая немного «из коробки».Есть много популярных идей о производительности, которые на самом деле довольно размыты.
Например, вы говорите, что ищете «методы, в которых тратится большинство времени».Если под этим вы подразумеваете «собственное время» (фактически счетчик программ в методе), то, вероятно, очень мало, если у вас нет интенсивных циклов.Обычно методы тратят время, вызывая другие методы, иногда выполняя операции ввода-вывода.
Другая нечеткая идея заключается в том, что измерение времени метода или подсчет количества вызовов может очень сильно рассказать вам о узких местах.Узкие места - это конкретные строки кода, а не методы, поэтому даже если вы знаете, где искать, вы все равно играете в детективы.
Так что это лишь некоторые из нечетких идей. Вот еще куча. Позвольте мне предложить, как должен подумать об этом, и как это приводит к результатам.
Когда вы в конечном итоге что-то исправите, это уменьшитвремя выполнения на несколько процентов, например (выберите число) 30%, верно?(В противном случае вы ничего не исправили.) Хорошо, в течение этих 30% он делал что-то, что ему не нужно было делать, потому что позже вы избавились от этого.Итак, вам не нужно измерять.Вам нужно нужно выяснить что он делает в это время, чтобы вы знали, от чего избавиться.
Очень простой способ - это«Пауза» это 10 (или некоторое количество) раз наугад.Понять, что он делает и почему, посмотрев на стек вызовов и, возможно, некоторые данные.Примерно в 3 из этих случаев вы увидите, что он делает что-то, от чего вы могли бы избавиться.
Вы узнаете приблизительно , сколько это сэкономит, увидев, какой процент образцов показываетЭто. Приблизительно достаточно хорошо. Вы можете легко увидеть, сколько именно сэкономлено времени, остановив его до и после.
Тогда не останавливайтесь.Вы сделали приложение быстрее.Сделайте это снова и сделайте это еще быстрее.Рано или поздно вы попадаете в точку, когда вы не можете сделать это быстрее, но, вероятно, это более чем за один шаг.