Google is Using File-by-File Patching to Reduce App Update Size

Google is Using File-by-File Patching to Reduce App Update Size

We may earn a commission for purchases made using our links.

Back in July of this year, Google announced a new method of reducing the file size of application updates. They haven been using delta algorithms since 2012 to help reduce the file size of app updates, but earlier this year they rolled out a new one. This new algorithm is called bsdiff, and it was created by Colin Percival. Their experiments showed this new algorithm was able to reduce the file size of updates by 50% or more.

This was an impressive change to how the Play Store handled application updates, but Google wasn’t done there. The company did more work and more tests, and have now announced a new approach that is said to go even further. This new process is called File-by-File patching, and Google’s tests show that this method can reduce the file size of application updates by 65% (on average). In some cases, this new method can reduce the file size by more than 90%.

With this new method, Google projects they will be able to save up to 6 petabytes of user data each and every day. With some only having internet access via their mobile plan, and others having a metered home internet service, this could save people a lot of data. For this to work, File-by-File patching will detect changes to the uncompressed data. So they have to decompress both the old and new files so they can compute the delta.

Then to apply the patch, they decompress the old file and apply the delta to the uncompressed content before recompressing it into the new file. In Google’s testing, they used apps like Netflix, Kindle, Gmail, Google Maps and even Farm Heroes Super Saga. The new File-by-File patching would sometimes only result in a file size reduction of 8% (when compared to bsdiff), but others showed as much as 40% more than bsdiff (Netflix), which resulted in the app update being reduced by 92% compared to the original file.

Source: Android Developers Blog