Hi,
found time to proceed on this issue.
I can now reproduce the issue with the public gerrit repo. When pushing one new commit to a local clone of the gerrit repo (a repo having a lot of refs) then the push is 8 times slower if the sending repo has bitmaps. Most of the time is spent in org.eclipse.jgit.revwalk.BitmapWalker.findObjectsWalk(). The script which execution log I append can be downloaded from
https://gist.github.com/chalstrick/864fecf5cc45c056e90225418d6b9c89
++ jgit --version
jgit version 5.1.8-SNAPSHOT
++ rm -fr gerrit.src.git gerrit.dst.git gerrit.client
++ git clone --bare --mirror
https://gerrit.googlesource.com/gerrit gerrit.dst.git
...
++ cp -r gerrit.dst.git gerrit.dst.git.backup
++ git clone --bare --mirror gerrit.dst.git gerrit.src.git
Cloning into bare repository 'gerrit.src.git'...
done.
++ git clone gerrit.src.git gerrit.client
Cloning into 'gerrit.client'...
done.
++ cd gerrit.client
++ date
++ git add README.md
++ git commit -m 'modify README.md'
[master 7d26b6c82f8] modify README.md
1 file changed, 1 insertion(+)
++ git push origin
...
++ cd gerrit.src.git
##### The fast push (2s) when we don't have bitmaps
++ jgit push origin HEAD:refs/heads/master
Counting objects: 3
Finding sources: 100% (3/3)
Getting sizes: 100% (2/2)
Compressing objects: 100% (4210/4210)
Writing objects: 100% (3/3)
remote: Updating references: 100% (1/1)To /Users/d032780/git/repl_test/gerrit.dst.git
78e6f24..7d26b6c HEAD -> master
real 0m2.173s
user 0m5.084s
sys 0m0.525s
++ rm -fr gerrit.dst.git
++ cp -r gerrit.dst.git.backup gerrit.dst.git
++ cd gerrit.src.git
### Force creating bitmaps
++ git repack -a -d -b
Enumerating objects: 1053003, done.
Counting objects: 100% (1053003/1053003), done.
Delta compression using up to 8 threads
Compressing objects: 100% (436944/436944), done.
Writing objects: 100% (1053003/1053003), done.
Selecting bitmap commits: 238041, done.
Building bitmaps: 100% (352/352), done.
Total 1053003 (delta 467117), reused 1052949 (delta 467065)
##### The slow push (9s) when we have bitmaps
++ jgit push origin HEAD:refs/heads/master
Counting objects: 528225
Finding sources: 100% (3/3)
Getting sizes: 100% (2/2)
Compressing objects: 100% (1142/1142)
Writing objects: 100% (3/3)
remote: Updating references: 100% (1/1)To /Users/d032780/git/repl_test/gerrit.dst.git
78e6f24..7d26b6c HEAD -> master
real 0m9.070s
user 0m12.130s
sys 0m1.015s
>