Ограничение скорости процессора для профилирования - PullRequest
11 голосов
/ 10 сентября 2008

Я пытаюсь оптимизировать несколько узких мест в приложении, которое должно работать на очень широком диапазоне процессоров и архитектур (некоторые из них очень близки к встроенным устройствам).

Однако результаты моего профилировщика не очень значительны из-за скорости моего процессора. Есть ли способ (желательно под Windows или Mac OS X) ограничить скорость моего процессора для профилирования?

Я думал об использовании виртуальной машины, но не нашел ни одной с такой функциональностью.

Ответы [ 6 ]

4 голосов
/ 11 сентября 2008

Это хорошо работает и поддерживает многоядерный. http://www.cpukiller.com/

2 голосов
/ 08 июля 2009

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

Это метод, который я использую.

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

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

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

1 голос
/ 12 сентября 2008

Боюсь, я не знаю никакого ответа, кроме как начать осматривать в вашем районе старое оборудование. Процессор не единственная переменная, которая может (обычно) влиять на вещи. Размер кэша L1 / L2, скорость шины памяти, скорость / задержка памяти, скорость жесткого диска и т. Д. - все это важные факторы во многих приложениях.

0 голосов
/ 30 ноября 2010

Я думал об использовании виртуального машина, но не нашел с такая функциональность.

Зачем вам нужна виртуальная машина, которая явно предлагает эту функциональность? Просто ограничьте использование ЦП виртуальной машиной в хост-ОС (где это обычный процесс). Это должно иметь точно такой же эффект.

Вы можете сделать это, например. использование cpulimit в Linux; аналогичные решения существуют для MS Windows.

0 голосов
/ 12 сентября 2008

Многие профилировщики (например, oprofile - но это только Linux) позволяют вам устанавливать частоту сбора данных. Посмотрите, поддерживает ли ваш профилировщик это, и если нет, попробуйте другой, который это делает.

0 голосов
/ 10 сентября 2008

Недавно на Downloadsquad.com появилось приложение. Я не помню его названия, но это доставляло удовольствие жёстким процессорам и диспетчеру задач. Возможно, было только управлять тем, какие приложения на каком процессоре, но, возможно, это дало бы вам это. Я постараюсь найти его сегодня днем ​​и ответить, если найду.

...