Я предполагаю, что есть фаза выполнения приложения, которая занимает слишком много времени - то есть это заставляет вас ждать.
Я предполагаю, что вы действительно хотите видеть, что вы можете изменить, чтобы сделать это быстрее.
Техника, которая работает: случайная пауза .
Вы запускаете приложение в отладчике и в той части его выполнения, которая заставляет вас ждать, приостанавливать его и проверять стек вызовов. Сделайте это несколько раз.
Вот несколько способов, которыми ваша программа может тратить больше времени, чем необходимо.
- Ввод / вывод, о котором вы не знали и на самом деле не нуждались.
- Распределение и освобождение объектов очень часто.
- Быстрые уведомления о структурах данных.
- других слишком много, чтобы упоминать ...
Независимо от того, что это, когда это происходит, проверка стека вызовов покажет это.
Как только вы узнаете, что это такое, вы сможете найти лучший способ сделать это или, возможно, вообще не делать этого.
Если программе требуется 5 секунд, а это может занять 1 секунду, то вероятность того, что вы увидите проблему при каждой паузе, составляет 4/5. Фактически, любой вызов функции, который вы видите в более чем одном образце стека, если вы можете избежать этого, даст вам значительное ускорение.
И почти все возможные узкие места могут быть найдены таким образом.
Не думайте о таймингах функций или о том, сколько раз они вызывались. Ищите строки кода, которые часто появляются в стеке, которые вам не нужны.
Пример добавления: если вы берете 5 образцов стека и на 2 из них появляется строка кода, то она отвечает примерно за 2/5 = 40% времени, отдача или возьмите . Вы не знаете точный процент, и вам не нужно знать.
(Технически, в среднем это (2 + 1) / (5 + 2) = 3/7 = 43%. Неплохо, и вы точно знаете, где это.)