Tonight. we deployed a major update to the underlying Review Board code that powers RBCommons. We’ve been holding off on updating in order to get some widespread testing for some pretty significant speed improvements we made, and I’m pleased to say they’re ready.
This is the first thing you can expect when you next use the site. It should be a lot faster. We’ve sped up every page, and you’ll see the biggest differences when loading review requests (long ones in particular) and the diff viewer.
The smarts of the diff viewer have been improved, so we better handle very large diffs and diffs with very large lines. This used to take forever, but not anymore!
We did some performance testing on these new changes and saw some crazy drops in page render times. Average sized review request pages went from ~500ms to ~180ms. Large ones with dozens of reviews dropped from ~3 seconds to ~300ms. Diffs saw savings of a few seconds on average, or in pathological cases, as much as a minute.
Every time we show a date or time on a page now, you can always be sure that it’s relative to now. Sit and stare at a page for a few minutes and you’ll see time tick away.
Incremental diff expansion
This is my personal favorite new feature. Our diff headers (the brown parts that show the function or class name) have just gotten much more useful.
We now have little expand buttons on these headers. You can expand the diff by 20 lines at a time, or all the way up to the displayed function or class. Or you can still expand the whole thing if you need to.
This is one of those small things that should save you a lot of time.
Bug fixes galore
This update also comes with dozens of bug fixes. Many of these fix compatibility issues we had with certain types of diffs. A few highlights:
- Git diffs with binary files, Subversion diffs with property changes, Mercurial diffs with spaces in the filename are all now working.
- Subversion diffs that had broken $Keyword$ fields don’t break in the diff viewer anymore.
- Git diffs created with format-patch no longer have their extra information (such as a commit description) stripped after uploading.
- Better support for Mercurial, particularly on Google Code.
- When using Parent diffs, new files are no longer styled wrong in the diff viewer.