We listened closely to all of your feedback about the pain points that remained in the 2.x release of Windows, and the resounding chorus was… performance, performance, performance! While we’d already integrated LibGit2 with great success it wasn’t a panacea. We knew we could do better but needed more data.
Under the covers
We began by adding the Process Log, which helps you clearly understand how Sourcetree is using Git and Mercurial. It can also help diagnose issues like long-running, orphaned or duplicate processes. It’s also for those who might be curious about how things work behind-the-scenes without opening Task Manager or a terminal window to dig deeper. Using this new utility we were able to identify and resolve a number of subtle bugs that were unexpectedly consuming precious computing resources.
Depending on others
The heart of a repository lies in its commit graph. Another thing we learned, from both benchmarking instrumentation and the Process Log, was that submodule loading performance was slower with LibGit2 than calling out to the Git executable. We tracked down some issues that were responsible for these slowdowns; fixing them resulted in the dramatic 3 – 4x speed boost you see below; darker bars represent the improved times.
But wait, there more… we chose to use the Boost library as our benchmark because it contains over 100 submodules and were able to reduce the time it takes to scan for and show changes from 26 seconds to just 2 seconds. That’s more than an order of magnitude faster! Normally we’d put a gif of the difference here to demonstrate the impact but we decided to save you from an infinite spinner.
Jump around, jump around
If you’ve ever seen the dreaded ‘Fetching Commits’ banner and felt frustrated as Sourcetree does a bunch of work – good news, it’s largely a thing of the past. The change sounds a bit logical when talking through it… any “jump” will now use the date of the commit as a reference point for loading. Now we can typically run a single command instead of continually loading our way to the selected commit with an unbounded number of commands. While both styles can be effective at loading the graph dynamically, especially given our performance boost above, we’ve eliminated any potential for it to be rather annoying to jump thousands of commits back in your history, instead responding nimbly regardless of your repository’s size or shape.
Take it to 11
As a bit of icing on the cake we also improved the experience for tabs by reducing the time it takes a tab to first load by 100ms and more noticeably by adding a smooth animation when working with them.
We’re incredibly proud to share the 126.96.36.199 release with all our users to help them save countless developer hours and increase their productivity. Download it today from our website to enjoy one of the most stable, responsive, and performant experiences for Sourcetree on Windows to date.