Измерьте расходы на резьбу - PullRequest
5 голосов
/ 27 октября 2008

Джо Даффи утверждает в статье MSDN « Использование параллелизма для масштабируемости », что стоимость создания потока составляет примерно 200 000 циклов, а стоимость разрушения - около 100 000 циклов.

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

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

Ответы [ 4 ]

2 голосов
/ 27 октября 2008

Вы можете использовать профилировщик выборки, такой как Intel Vtune, чтобы получить показатель количества циклов ЦП, потребляемых при минимальной помехе в измеряемой системе.

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

1 голос
/ 27 октября 2008

Я бы проверил пространство имен System.Diagnostic. В нем много материала по отслеживанию использования памяти и процессора.

0 голосов
/ 27 октября 2008

Вот проблема с подсчетом циклов ЦП. Различные процессоры используют разное количество циклов для реализации одной и той же инструкции. Так что это не слишком надежный показатель ИМО. Я думаю, что вы должны измерять время выполнения, и в .NET вы используете System.Environment.TickCount для этого. Я думаю, что это лучшее, что у тебя есть ...

0 голосов
/ 27 октября 2008

Я задал тесно связанный вопрос пару дней назад, но пока не нашел способа измерить фактическое использование кода ЦП: Ограничение числа циклов выполнения сборки

В вашем случае, не могли бы вы запустить профилирование вычислений и посмотреть, сколько времени занимает одно вычисление, и сравнить его с совокупным временем порождения потока, который выполняет вычисления, а затем уничтожить поток впоследствии?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...