Дайте все возможные ресурсы для программы - PullRequest
1 голос
/ 08 мая 2011

Я создал программу на C # для работы с 2,5 миллионами записей в Oracle Express (локальный экземпляр), проанализировал / разделил эти записи и создал дополнительные 5 миллионов записей.

Я добавил некоторый код для печати времени наэкран и кажется довольно быстро.Это делает всю обработку для 1K записей каждые 9 секунд.Это означает, что для завершения требуется более 6 часов.

Теперь, с помощью диспетчера задач, я вижу, что программа использует 6% ЦП (макс.) И около 50 МБ памяти.Я понимаю операционную систему, и сама Oracle нуждается в ресурсах для работы, но ..... есть ли способ сказать этой маленькой программе "эй, все в порядке, продолжайте и используйте по крайней мере 50% ЦП, есть 4 ГБ ОЗУ, поэтомупокончить с собой "?

Примечание. Одна из причин, по которой я использую локальный экземпляр с Oracle Express, заключается в уменьшении узких мест в сети.Также я мог бы не запускать этот процесс довольно часто, но я был заинтригован, чтобы увидеть, было ли это вообще возможно.

Пожалуйста, прости мою нубность,

Спасибо!

Ответы [ 2 ]

3 голосов
/ 08 мая 2011

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

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

0 голосов
/ 08 мая 2011

Множество мыслей, не совсем ответы, я думаю, но.

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

Вы запускали на нем профилировщик?

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

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

  3. Если ваши приложения рисуют / обновляют экран или пользовательский интерфейс, то это почти наверняка замедлит ход работы. Пример. Я запустил приложение, которое сортировало около 10 тыс. Электронных писем в 250 тыс. Строк в базу данных, если я добавлял элемент в список в каждой строке, время от короткой до смешной, например, сбой становился скучным. Итак, опять же, выгрузка в поток для выполнения работы с минимальным количеством обновлений пользовательского интерфейса может помочь.

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