Re: fork performance

Lloyd Parkes <[email protected]> Thu, 18 Oct 2012 18:36:18 +1300
Newsgroups gmane.os.netbsd.devel.performance
Message-ID <[email protected]>
On 18/10/2012, at 4:47 PM, Thor Lancelot Simon <[email protected]> wrote:
> Why don't you run cvs locally?

I am. The cvs server is run from the main program via popen and this =
allows the main program to issue many cvs commands through a single =
pipe.

A bit more background: this is all being driven from a Python program =
that is a part of Mercurial which does a pretty good job of converting =
CVS repositories to Mercurial. The original code used popen("cvs log") =
once to read the entire revision log in one go and popen("cvs server") =
once to issue many checkouts (one per revision per file) to read the =
actual file data. Unfortunately, the output from "cvs log" cannot be =
parsed in the general case, and the NetBSD repositories present the =
general case. I changed the first bit of code to work like the second =
bit of code because "cvs log" for one revision of one file can be parsed =
in the general case.

I have to admit that if I were running the individual commands locally =
Python would hopefully be using vfork instead of fork. More thinking and =
testing is required.

Cheers,
Lloyd