2008-09-10 4 views
11

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

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

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

ответ

0

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

0

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

+0

Я считаю, что он хочет замедлить работу процессора, поэтому соотношение между скоростью процессора и скоростью других операций (например, ввода-вывода, ввода пользователем ...) ближе к отношениям, испытываемым на старых системах. Я не вижу, как там будет увеличиваться частота сбора данных. – sleske 2010-11-30 11:56:36

+0

@sleske Я предположил, что он имел в виду, что процессор был настолько быстрым, что было собрано очень мало образцов профилей, поэтому никаких значимых данных не было возвращено. – 2010-12-22 15:43:36

1

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

2

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

This is the method I use.

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

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

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

+0

У вас есть точка, но в первую очередь вы должны выяснить *, если у вас есть проблема *. Если у вас есть неэффективный код, но неэффективность дублируется временем ожидания ввода-вывода, нет смысла оптимизировать его. Таким образом, отношения между скоростями компонентов системы имеют значение для тестирования производительности, и поэтому ему необходимо замедлить работу процессора. – sleske 2010-11-30 11:58:34

0

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

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

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

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