Mohamed Mansour's Personal Website
Chromium msysgit vs cygwin Git Performance
Posted on March 12, 2011, 6:27 pm EST
I got really frustrated with the inconsistencies and problems arising with Cygwins' Git support. The terminal goes haywire, awfully slow, and stuff just didn't work as I wanted to unless I do some modifications. Yesterday, I officially completed my set of patches to make msysgit function perfectly (I hope) with Chromium! My frustration no longer exists!
Since the very beginning, Chromium was using SVN as its main repository, then around a year later some Chromium devs (Evan Martin and others) started to support Git and used git-svn to commit back to Chromium repo. Msysgit wasn't performing well, it was causing too many problems with git-svn, since it wasn't fully supported. The tooling in Chromium is all done in Python to make it cross platform with Linux/Mac/Windows and its pretty great! Some parts of the code are just checking for cygwin explicitly causing msysgit not to work. After my frustration with cygwin, with Marc-Antoine's help, we fixed msysgit issues and eveything works well. Really well!
To tell you the truth, on Windows, it feels snappier and less hassle to work on Chromiums source code with msysgit than cygwin. It feels faster and natural. I was curious to see how well it improvement, and performed. So here are the averaged timings of 5 trials. Some pre info:
- Windows 7 x64
- 4GB RAM
- Secondary HD
- Latest Cygwin updates installed.
- Cygwin Git 1.7.4
- Msysgit Git 184.108.40.206
As shown above, the timings improved quite a bit. Around 50% to 100% on the operation. It does feel snappier. I no longer have to wait 2-3 seconds waiting for the "git status" to show up on a warm start. Even on a cold start status, the timings improve quite a bit with msysgit.
So what does user+sys represent? Basically, it tells us how much actualy CPU time the process used. It is quite significant ... Cygwin uses way more CPU time than msysgit. Okay, not that much just around one second. But still, you get the point.
Not only you get speed improvements with msysgit, you get stability improvements too. For example, cursor annoyances, copy paste screw-ups, terminal freezes, random locking annoyances, etc are all not visible anymore. I have been using it for around one months now, and no issues so far :) As a bonus, the msysgit shell starts up super fast!