Вы можете по-разному думать о настройке производительности?
Он не смотрит на I/O vs CPU bound, hotspots и timers.
Во-первых, подумайте только об одном потоке. Выполнение потока очень похоже на дерево. Существует основная функция (багажник). Есть пункты, когда вызываются подпрограммы (ветви). Существуют терминальные инструкции (листья) и блокировка вызовов, таких как ввод-вывод (фрукты). Общее время, которое занимает программа, это сумма всех листьев и всех плодов.
Что вы хотите сделать, это обрезать дерево, сделав его максимально легким, не убивая его.
То, что многие люди делают, взвешивает (время) все это, а затем взвешивает части и т. Д. И надеется найти горячие точки (листовые ветви), которые, возможно, они могут обрезать.
Другой способ: 1) выбрать некоторые листья или фрукты в случайном порядке. 2) от каждого листа или плода, покрасьте линию от него вдоль ветви, на которой он находится, полностью назад к стволу. 3) Обратите внимание на ветви, на которых нарисованы> 1 строчка. 4) Спросите: «Мне нужна эта ветка?». Если вы можете обрезать его, сделайте это. Вы устраните весь вес ветки, и вы сделали это, не взвешивая ее. Тогда начните сначала.
Идея random-pausing. Есть определенные проблемы, которые он не найдет, но большинство из них он найдет, быстро, включая любые моменты, которые могут быть найдены.
Это зависит от языка. Многие языки имеют инструменты профилирования. – 2010-12-17 05:45:00