2013-07-30 2 views
0

Я разрабатываю часть программного обеспечения, которое нужно запускать в высокопроизводительной среде, и мне интересно, следует ли ее запускать как Windows-Service или обычное Windows-приложение. Вопрос в следующем: есть ли разница между показателями производительности? означает: будет ли планировщик ОС предоставлять Windows-Service больше тиков процессора, чем Windows-приложение?Производительность Windows по сравнению с Windows Производительность приложения

ответ

2

Чтобы ответить на этот вопрос, см Description of Performance Options in Windows:

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

...

ситуация становится более сложным, когда вы включите опцию Foreground Applications. Это вводит понятие «переменная квантовую». в этом case, фоновые задачи получают другой квант, чем кванты, принятые передними задачами. Кроме того, оба набора квантов короче, чем поток будет получать на компьютерном наборе для фоновых служб. y, фоновый процесс получает квант 3, а процесс переднего плана получает квант 9. Поэтому вы можете рассчитать продолжительность времени, в течение которого поток будет работать до истечения его таймера.

Прочтите всю ссылку для получения более подробной информации. TL/DR: фоновые службы получают более длинные кванты.

Однако, я очень сомневаюсь, что вам нужно беспокоиться об этой настройке. В первую очередь 99,9999% приложений ничего не делают все время, но ждут завершения ввода-вывода (диска, сети). Если вы не выполняете арифметику в замкнутом цикле, ваш код по всем практическим причинам никогда не работает и всегда ждет. Повышение не поможет вам. И я очень сомневаюсь, что вам действительно нужно развернуть службу , которая делает высокий процессор в узком цикле.

Более подходящая тема для вас - перейти к High Performance Windows Programs, чтобы узнать, как правильно писать программы производительности в Windows (то есть использовать статус завершения очереди IO и друзей).

И, если вам нужно усиление процессора, просто отключите CPU power savings in BIOS.

+0

Отличный ответ. Чтобы добавить к этому (хотя я не могу найти ссылку сейчас ...), существует аналогичная переменная квантовой вещи между серверными и несерверными версиями Windows, независимо от пользовательских настроек. Плюс, конечно, эффекты, связанные с повышением приоритета на событиях, которые сигнализируются. – Damon

+0

@Damon: возможно [Внутри ядра Windows Vista: часть 1] (http://technet.microsoft.com/en-us/magazine/2007.02.vistakernel.aspx): 'По умолчанию в клиентских версиях потоков Windows разрешено запускать до 2 тактов (6 на переднем плане) '(в отличие от 3 и 9 для сервера). –

+0

Действительно, вот и все! :) – Damon

Смежные вопросы