Каковы издержки создания процесса в Windows?
============================================

Я продолжаю слышать, что создание нового процесса в Windows очень дорого. Но я не могу найти точные цифры. Есть ли приблизительное количество циклов? Сколько миллисекунд на 2-ГГц двухъядерном процессоре?

Я написал тестовую программу на Python и измерил 5 мс на процесс, но я не знаю, какая из этих дополнительных затрат связана с Python. Я не очень догадываюсь.

Интересный вопрос!

Как сказано выше, накладные расходы высоки. Из любопытства, если вы быстро написали небольшой тест, чтобы понять, сколько времени занимает создание потока и процесса и как эти времена связаны.

Я сделал несколько запусков на моем компьютере (i5 3,2 ГГц; Windows 7), и значения довольно постоянны, если антивирусное приложение выключено и тест запускается из-за пределов Visual Studio:

Как и ожидалось, вариация CreateProcess (..) больше, так как задействовано больше системных вызовов и вероятность прерывания другим потоком выше. Помните, что время для создания потока еще короче, поскольку измерение времени включает в себя весь цикл управления (в противном случае GetTickCount (..) будет слишком неточным для измерения времени).

Другой тест на виртуальном ПК под управлением Windows XP (работающий на той же машине, что и упомянутый выше) дал следующие значения:

Интересно, что соотношение среднего времени выполнения CreateProcess (..) и CreateThread (..) довольно близко.

Было бы интересно увидеть значения других машин и версий Windows. Я не удивлюсь, если соотношение примерно 300 будет одинаковым на разных машинах и версиях Windows.

Итак, давайте сделаем вывод: CreateProcess (..)**much**  медленнее, чем CreateThread (..) в Windows. Но на самом деле я шокирован тем, насколько медленнее это на самом деле ...