У меня есть несколько консольных приложений на С#, которые в основном анализируют тонны данных в памяти (LINQ) и выводят результаты в текстовый файл.
Теперь забудьте о записи в текстовый файл в течение минуты, потому что это не проблема.
Когда я запускаю приложение в режиме отладки, я никогда не получу его для использования более 50% использования процессора. Он будет анализировать/массировать сотни тысяч записей, но быстро идти X и использовать 50% процессора AT MOST (если смотреть в диспетчере задач).
Мне бы очень хотелось использовать 100% процессора, чтобы ускорить обработку.
Есть ли у кого-нибудь проницательность?
Я запускаю Windows XP Professional с пакетом обновления 3. У меня есть Visual Studio 2008 Professional с пакетом обновления 1 (SP1).
Спасибо!
EDIT:
Похоже, у вас двухъядерный процессор, и ваше приложение однопоточное.
Похоже, у вас есть двухъядерный процессор. Настройка сродства к процессору ничего не поможет ускорить вашу программу. Также 51/52%, которые вы видите, это другие процессы, запущенные на другом ядре на 1-2% PLUS, ваша программа, работающая на первом ядре на полной скорости.
Если вы хотите, чтобы ваша программа использовала оба ядра, попробуйте посмотреть в PLINQ в библиотеке параллельных расширений.
Если ваше приложение выполняется только на одном потоке, и у вас есть двухъядерный процессор, будет использоваться только один из ядер, поэтому вы используете 50% доступной мощности процессора.
Если у вас есть возможность разделить работу на логические части и порождать потоки, связанные с этими частями, вы можете использовать оба ядра.
У вас есть процессор с двумя ядрами. В вашем приложении есть только один поток, который может работать только на одном ядре. Он использует это ядро до 100%. Если вы хотите использовать другое ядро, вам придется использовать больше потоков.
Как говорили другие, ваше приложение работает на одном ядре вашего двойного (2) центрального процессора. Когда вы видите 50% в диспетчере задач, это означает, что ядро, на котором запущено ваше приложение, составляющее половину вычислительной мощности вашего процессора, работает на 100%.
Написание программного обеспечения для использования многоядерных процессоров - это искусство для себя. См. эту статью для обсуждения. Как говорит @Alex Moore, если вы видите 51% или 52%, это, вероятно, означает, что другое ядро делает что-то на уровне 1% -2%.