Это из-за переключения задач (и, возможно, дополнительно пейджинга). Если есть только одна программа, требующая много времени ЦП и / или обращений к памяти, ей будет предоставлено много временных интервалов ЦП и, таким образом, она сможет работать без перерыва в течение «длительного» времени. С другой стороны, если нескольким процессам требуется много процессорного времени, Windows будет часто переключаться между ними и, таким образом, вводит дополнительные служебные данные (поскольку для каждого переключателя задач необходимо сохранять / загружать состояние процесса). ). Если у вас 2 ЦП, это менее проблематично, но все же измеримо, потому что фоновые процессы также требуют внимания, хотя и реже.
Смотрите здесь для получения дополнительной информации:
http://en.wikipedia.org/wiki/Context_switch
Если это беспокоит, вы можете попробовать это, но я не уверен, что это работает, поэтому, пожалуйста, не голосуйте, если это не так:
Вставка вызовов Sleep (10) в вашу программу; ваша программа должна получить более длинные, но менее частые временные интервалы:
http://msdn.microsoft.com/en-us/library/ms686298%28VS.85%29.aspx