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

2

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

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

Когда я запускаю приложение в режиме отладки, я никогда не получу его для использования более 50% использования процессора. Он будет анализировать/массировать сотни тысяч записей, но быстро идти X и использовать 50% процессора AT MOST (если смотреть в диспетчере задач).

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

Есть ли у кого-нибудь проницательность?

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

Спасибо!

EDIT:

  • Я вручную установил близость процесса в диспетчере задач к одному ядру на двойном процессоре.
  • Иногда я могу поймать его, используя 51% или 52% процессора.
  • 0
    Если вы вручную устанавливаете привязку для использования одного кода, то даже если он является многопоточным (с возможностью использования обоих ядер), вы заставляете его использовать одно ядро, что никогда не превысит 50%. Чтобы использовать оба ядра, вам нужно подключить его самостоятельно и разрешить использовать оба ядра.
Теги:
visual-studio
debugging
visual-studio-2008

5 ответов

25
Лучший ответ

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

5

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

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

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

Статья Плинка

4

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

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

  • 0
    Я хотел бы видеть мотивацию для этого downvote.
3

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

1

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню