Запуск консольного приложения Visual Studio в режиме отладки потребляет не более 50% ресурсов процессора - PullRequest
2 голосов
/ 13 октября 2009

У меня есть несколько консольных приложений C #, которые в основном анализируют тонны данных в памяти (LINQ) и выводят результаты в текстовый файл.

Теперь забудьте на минуту о записи в текстовый файл, потому что проблема не в этом.

Когда я запускаю приложение в режиме отладки, я никогда не заставлю его использовать более 50% загрузки процессора. Он будет выполнять синтаксический анализ / массирование сотен тысяч записей, но будет работать только на скорости X и использовать 50% ЦП в НАИБОЛЕЕ (как показано в диспетчере задач).

Мне бы очень хотелось использовать 100% ЦП, чтобы ускорить обработку.

У кого-нибудь есть понимание?

Я использую Windows XP Professional с пакетом обновления 3. У меня установлена ​​Visual Studio 2008 Professional с пакетом обновления 1.

Спасибо!

EDIT:

  • Я вручную установил привязку процесса в диспетчере задач к одному ядру на двухъядерном процессоре.
  • Иногда я могу поймать его, используя 51% или 52% процессорного времени.

Ответы [ 5 ]

25 голосов
/ 13 октября 2009

Похоже, у вас двухъядерный процессор, а ваше приложение однопоточное.

5 голосов
/ 13 октября 2009

Похоже, у вас двухъядерный процессор. Установка сродства процессора ничего не сделает для ускорения вашей программы. Кроме того, 51/52%, которые вы видите, - это другие процессы, работающие на другом ядре со скоростью 1-2%, плюс ваша программа, работающая на первом ядре на полной скорости.

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

Библиотека параллельных расширений

Плинк Артикул

4 голосов
/ 13 октября 2009

Если ваше приложение выполняется только в одном потоке, и у вас двухъядерный процессор, то будет использоваться только одно из ядер, поэтому вы используете 50% доступной мощности процессора.

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

3 голосов
/ 13 октября 2009

У вас есть процессор с двумя ядрами. Ваше приложение имеет только один поток, который может работать только на одном ядре. Он использует это ядро ​​на 100%. Если вы хотите использовать и другое ядро, вам придется использовать больше потоков.

1 голос
/ 13 октября 2009

Как уже говорили другие, ваше приложение работает на одном ядре вашего двухъядерного процессора. Когда вы видите 50% в диспетчере задач, это означает, что ядро, на котором работает ваше приложение, что составляет половину вычислительной мощности вашего процессора, работает на 100%.

Написание программного обеспечения для использования многоядерных процессоров - это искусство само по себе. См. эту статью для обсуждения. Как говорит @Alex Moore, если вы видите 51% или 52%, это, вероятно, означает, что другое ядро ​​что-то делает на 1% -2%.

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