Как максимально увеличить мощность, используемую моим приложением на C #?

StackOverflow https://stackoverflow.com/questions/716261

  •  23-08-2019
  •  | 
  •  

Вопрос

Поскольку я создал приложение, требующее больших вычислений -> предстоит много работы, не очень сложные вычисления -> на их выполнение уходит слишком много времени, а процесс занимает всего 45% процессора.Могу ли я как-то максимизировать это?:перейти на 90%?

Это было полезно?

Решение

Если у вас двухъядерный компьютер (что, я предполагаю, у вас есть), максимум, на что вы могли бы надеяться в одном потоке, - это 50% загрузки процессора.

Чтобы получить 90%-ную загрузку процессора, вам, скорее всего, потребуется выполнить потоковые вычисления.Это может быть очень просто или очень сложно, в зависимости от характера алгоритма, который вы хотите реализовать.

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

Другие советы

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

Проверьте это:

  1. Читаете ли вы с диска во время вычислений?Если это так, попробуйте прочитать данные в памяти перед вычислениями.
  2. Записываете ли вы результаты на диск или консоль во время вычисления?Если это так, попробуйте отложить написание до завершения вычислений, а затем приступайте к написанию.
  3. Если у вас многоядерный процессор, попробуйте создать многопоточный алгоритм, если это возможно.

Если у вас просто есть простой цикл, выполняющий вычисления, то, скорее всего, ваш компьютер имеет два ядра / процессора.Однопоточное приложение в лучшем случае будет использовать 50% процессора.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top