Switching subprocess.h to posix_spawn
My single header C/C++ cross platform sub-process interaction library
subprocess.h was designed using
fork()
on Linux/macOS. But a little birdie told me that I should be looking
into using posix_spawn()
instead as it was faster.
TL;DR - I’ve switched the library to use POSIX spawn.
There are various reasons fork can be slow, so how does my library fare? This is running on my MacBook Air (M1, 2020):
process created | fork() | posix_spawn() | % faster |
---|---|---|---|
clang –version | 322.304us | 315.700us | 2% |
So it is faster, albeit not by a huge amount. Note this is a really synthetic example where my parent process doesn’t have a huge amount of state, but since using POSIX spawn is already faster I pulled the trigger and merged it.