Как измерить? - PullRequest
       22

Как измерить?

1 голос
/ 17 декабря 2010

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

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

  1. отсутствует кэш
  2. эффект контекста потока.

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

Ответы [ 2 ]

2 голосов
/ 21 декабря 2010

Готовы ли вы по-другому взглянуть на настройку производительности?
В ней не рассматриваются операции ввода-вывода с привязкой к процессору, точками доступа и таймерами.

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

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

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

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

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

0 голосов
/ 17 декабря 2010

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

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

2) Потоки действительно больно корректно профилировать.Поиграйте с процессорами и сходством процессов, в современных системах NUMA это быстро становится критическим.

...