Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit b944bc4

Browse files
committed
git: add benchmark for iterating repository objects
Signed-off-by: Miguel Molina <miguel@erizocosmi.co>
1 parent 56c5e91 commit b944bc4

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

repository_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1688,3 +1688,59 @@ func (s *RepositorySuite) TestBrokenMultipleShallowFetch(c *C) {
16881688
})
16891689
c.Assert(err, IsNil)
16901690
}
1691+
1692+
func BenchmarkObjects(b *testing.B) {
1693+
if err := fixtures.Init(); err != nil {
1694+
b.Fatal(err)
1695+
}
1696+
1697+
defer func() {
1698+
if err := fixtures.Clean(); err != nil {
1699+
b.Fatal(err)
1700+
}
1701+
}()
1702+
1703+
for _, f := range fixtures.ByTag("packfile") {
1704+
if f.DotGitHash == plumbing.ZeroHash {
1705+
continue
1706+
}
1707+
1708+
b.Run(f.URL, func(b *testing.B) {
1709+
fs := f.DotGit()
1710+
storer, err := filesystem.NewStorage(fs)
1711+
if err != nil {
1712+
b.Fatal(err)
1713+
}
1714+
1715+
worktree, err := fs.Chroot(filepath.Dir(fs.Root()))
1716+
if err != nil {
1717+
b.Fatal(err)
1718+
}
1719+
1720+
repo, err := Open(storer, worktree)
1721+
if err != nil {
1722+
b.Fatal(err)
1723+
}
1724+
1725+
for i := 0; i < b.N; i++ {
1726+
iter, err := repo.Objects()
1727+
if err != nil {
1728+
b.Fatal(err)
1729+
}
1730+
1731+
for {
1732+
_, err := iter.Next()
1733+
if err == io.EOF {
1734+
break
1735+
}
1736+
1737+
if err != nil {
1738+
b.Fatal(err)
1739+
}
1740+
}
1741+
1742+
iter.Close()
1743+
}
1744+
})
1745+
}
1746+
}

0 commit comments

Comments
 (0)