Готовы ли вы по-другому взглянуть на настройку производительности?
В ней не рассматриваются операции ввода-вывода с привязкой к процессору, точками доступа и таймерами.
Сначала подумайте только об одном потоке.Выполнение потока очень похоже на дерево.Есть основная функция (багажник).Есть моменты, когда подпрограммы называются (ветки).Есть терминальные инструкции (листья) и блокировки вызовов, такие как I / O (фрукты).Общее время, которое занимает программа, представляет собой сумму всех листьев и всех плодов.
То, что вы хотите сделать, это обрезать дерево, сделать его максимально легким, не убивая его.
То, что делают многие, - это взвешивание (время) всего этого, а затем взвешивание его частей и т. Д., И надежда найти горячие точки (листовые ветви), которые, возможно, они могли бы обрезать.
Другой способ - это 1) выберите несколько листьев или плодов наугад.2) от каждого листа или плода нарисуйте линию от него вдоль ветви, на которой он находится, вплоть до ствола.3) Обратите внимание на ветви, на которых нарисовано более 1 линии.4) Спросите «Нужна ли мне эта ветка?».Если вы можете сократить это, сделайте это.Вы уберете весь вес ветки, и вы сделали это без взвешивания.Затем начните все сначала.
Это идея случайной паузы .Есть определенные виды проблем, которые он не найдет, но большинство из них он найдет быстро, включая любые, которые могут найти потоки синхронизации.