2010-12-17 5 views
1

Когда я выполнил настройку производительности, я сначала буду работать на высоком уровне и попытаться ответить - это привязанная к процессору или IO-привязка?Как измерить?

, когда я убеждаюсь это процессор переплете, то я попытаюсь найти точку доступа, добавив некоторые таймер code.This это хорошо, но мне не удалось выяснить эти вопросы:

  1. промаха
  2. поток контекстного эффекта.

Есть ли кто-нибудь знает, как измерить эти предметы?

+1

Это зависит от языка. Многие языки имеют инструменты профилирования. – 2010-12-17 05:45:00

ответ

0

1) Использование похожем на Cachegrind/callgrind/KCachegrind http://valgrind.org/info/tools.html#cachegrind

очень полезно с точки зрения анализа локальность памяти при определенных наборов предположений.

2) Резьба очень болезненна для правильного профиля. Играйте с помощью cpusets и сродства процессов, на современных системах NUMA он быстро становится критичным.

+0

Howerver valgrind работает только на платформе nix. – Chang 2010-12-17 07:12:32

2

Вы можете по-разному думать о настройке производительности?
Он не смотрит на I/O vs CPU bound, hotspots и timers.

Во-первых, подумайте только об одном потоке. Выполнение потока очень похоже на дерево. Существует основная функция (багажник). Есть пункты, когда вызываются подпрограммы (ветви). Существуют терминальные инструкции (листья) и блокировка вызовов, таких как ввод-вывод (фрукты). Общее время, которое занимает программа, это сумма всех листьев и всех плодов.

Что вы хотите сделать, это обрезать дерево, сделав его максимально легким, не убивая его.

То, что многие люди делают, взвешивает (время) все это, а затем взвешивает части и т. Д. И надеется найти горячие точки (листовые ветви), которые, возможно, они могут обрезать.

Другой способ: 1) выбрать некоторые листья или фрукты в случайном порядке. 2) от каждого листа или плода, покрасьте линию от него вдоль ветви, на которой он находится, полностью назад к стволу. 3) Обратите внимание на ветви, на которых нарисованы> 1 строчка. 4) Спросите: «Мне нужна эта ветка?». Если вы можете обрезать его, сделайте это. Вы устраните весь вес ветки, и вы сделали это, не взвешивая ее. Тогда начните сначала.

Идея random-pausing. Есть определенные проблемы, которые он не найдет, но большинство из них он найдет, быстро, включая любые моменты, которые могут быть найдены.

+0

Это вовсе не «другой способ мышления о настройке производительности». Это немного другой (возможно, превосходный) способ создания профилирования на основе простейшей выборки. – 2010-12-28 14:49:58

Смежные вопросы