Как максимально увеличить мощность, используемую моим приложением на C #?
Вопрос
Поскольку я создал приложение, требующее больших вычислений -> предстоит много работы, не очень сложные вычисления -> на их выполнение уходит слишком много времени, а процесс занимает всего 45% процессора.Могу ли я как-то максимизировать это?:перейти на 90%?
Решение
Если у вас двухъядерный компьютер (что, я предполагаю, у вас есть), максимум, на что вы могли бы надеяться в одном потоке, - это 50% загрузки процессора.
Чтобы получить 90%-ную загрузку процессора, вам, скорее всего, потребуется выполнить потоковые вычисления.Это может быть очень просто или очень сложно, в зависимости от характера алгоритма, который вы хотите реализовать.
Если вы можете разбить свой рабочий набор на несколько групп, я бы рекомендовал рассмотреть возможность использования Пул потоков, или потенциально даже Параллельная Библиотека задач, в зависимости от ваших сроков выпуска.
Другие советы
Более чем вероятно, что у вас двухъядерный процессор, и если ваше приложение однопоточное, максимальный объем используемого им процессора составляет 50% (все из одного ядра).Чтобы получить лучшее использование, вам нужно использовать несколько потоков, но это также означает, что нужно найти какой-то способ разбить ваши вычисления на части, чтобы над ними могло работать более одного ядра.
Проверьте это:
- Читаете ли вы с диска во время вычислений?Если это так, попробуйте прочитать данные в памяти перед вычислениями.
- Записываете ли вы результаты на диск или консоль во время вычисления?Если это так, попробуйте отложить написание до завершения вычислений, а затем приступайте к написанию.
- Если у вас многоядерный процессор, попробуйте создать многопоточный алгоритм, если это возможно.
Если у вас просто есть простой цикл, выполняющий вычисления, то, скорее всего, ваш компьютер имеет два ядра / процессора.Однопоточное приложение в лучшем случае будет использовать 50% процессора.
Вам нужно несколько потоков, чтобы использовать весь процессор на многоядерной машине.