One of the more controversial features of Google’s Chrome/Chromium web browser is the way it handles updates. Contrary to other browsers, updates on Chrome are installed silently and automatically, without asking for the user’s consent. While convenient and effective, it was also a security risk and sometimes it slowed people’s machines down. Google now proposes a fix called Courgette.
Courgette is a new differential compression algorithm which significantly reduces the size of updates to the Chrome web browser. Instead of pushing out a full new browser binary during every update (10MB), Google was using the bsdiff algorithm to reduce the size of updates. Still, Google wanted smaller sizes to increase the bandwidth available for each user downloading a new update, as well as providing a better experience for people with lower connectivity.
So they came up with Courgette, which does a lot of magic stuff that I don’t understand very well. I do understand the end result: updates are now significantly smaller; 89% smaller than the bsdiff method used before. The sizes in this chart refer to the 190.1->190.4 update in Chrome’s developer channel (version 3).
“Courgette transforms the input into an alternate form where binary diffing is more effective, does the differential compression in the transformed space, and inverts the transform to get the patched output in the original format,” Google explains, “With careful choice of the alternate format we can get substantially smaller updates.”
It basically looks at the machine code of the new and the old executable. Adjusts/aligns the matching parts and then does a diff.(Not 100% correct, but you get the idea)
Simple but really genius .. just like their page rank algorithm… I am still pissed that I didn’t come up with something that obvious .. damn .. I could really use all that money.(I would spent most of it on cars, women and drugs. The rest I would squander.)
Edited 2009-07-16 22:06 UTC