Skip to content
Snippets Groups Projects
Commit 25a86875 authored by Stan Hu's avatar Stan Hu
Browse files

Speed up generation of commit stats by using Rugged native methods

The previous implementation iterated across the entire patch set
to determine the number of lines added, deleted, and changed. Rugged
has a native method `Rugged::Diff#stat` that does this already,
which appears to be a little faster and require less RAM than doing
this ourselves.

Improves performance in #41524
parent ff077cf7
No related branches found
No related tags found
No related merge requests found
---
title: Speed up generation of commit stats by using Rugged native methods
merge_request:
author:
type: performance
Loading
Loading
@@ -34,13 +34,8 @@ module Gitlab
 
def rugged_stats(commit)
diff = commit.rugged_diff_from_parent
diff.each_patch do |p|
# TODO: Use the new Rugged convenience methods when they're released
@additions += p.stat[0]
@deletions += p.stat[1]
@total += p.changes
end
_files_changed, @additions, @deletions = diff.stat
@total = @additions + @deletions
end
end
end
Loading
Loading
Loading
Loading
@@ -428,6 +428,11 @@ describe Gitlab::Git::Commit, seed_helper: true do
subject { super().deletions }
it { is_expected.to eq(6) }
end
describe '#total' do
subject { super().total }
it { is_expected.to eq(17) }
end
end
 
describe '#stats with gitaly on' do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment