gix-blame performance March 2026 through July 2026
code
analysis
Author
Christoph Rüßler
Published
July 19, 2026
Modified
August 10, 2026
Note
If you’re wondering why there’s earlier posts in this blog even though the first paragraph mentions this is the first post: the other, earlier posts were published on my main blog before this blog existed and then later imported with their original publication date.
In this post, I’m going to compare gix blame at commit e63d487fb (from February 16, 2026) with gix blame at commit 9949e9fdf (from July 19, 2026) (the latter chosen because it happened to be HEAD when I started writing this post). Specifically, I’m going to compare the performance of gix blame on the same set of 9 files that I used for the benchmarks of my earlier posts.
Running the benchmark
After compiling both executables with cargo build --release --locked, I ran the following script to collect some data using hyperfine.
This will create a couple of Markdown files, benchmark-1.json through benchmark-9.json.
Loading the data
Then, in order to work with these files, we’re going to use numpy and pandas to load them into data.
A few helper functions for loading the data
import numpy as npimport pandas as pdimport matplotlib as mplimport seaborn as snsimport jsondef load_results(filename):withopen(filename) as f:return json.load(f)["results"]def extract_data_points(result): command = result["command"] path = result["parameters"]["path"]return {"command": command, "path": path, "time": result["times"]}
filenames = [f"benchmark-{i}.json"for i inrange(1, 10)]results = [load_results(filename) for filename in filenames]results = [extract_data_points(result) for result in np.concatenate(results)]data = pd.concat( [pd.DataFrame(result) for result in results], ignore_index=True,)
And finally, we’re going to create 2 plots that will give us an idea of how both versions of gix blame compare with respect to performance. Looking in particular at the boxplot, it seems that performance slightly regressed between March and July.
Aggregating the data in a table confirms the initial impression we got from both plots: in this sample, gix-blame seems to have gotten slightly slower across the board, with losses of more than 4 % in one case. I don’t know yet whether this is due to a particular change, and the effect is not dramatic, but I plan on investigating this more in-depth in the future if time permits.