Ограничение скорости процессора для профилирования

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

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

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

Ответ 1

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

Ответ 2

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

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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