Skip to content

Commit

Permalink
add benchmark for split symbols
Browse files Browse the repository at this point in the history
Signed-off-by: Paul Cacheux <paul.cacheux@datadoghq.com>
  • Loading branch information
paulcacheux committed Nov 7, 2023
1 parent 8625e66 commit 9d7b642
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions linker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,34 @@ func TestSplitSymbols(t *testing.T) {
c.Assert(len(m["sym3"]), qt.Equals, 3)
c.Assert(len(m["sym4"]), qt.Equals, 4)
}

func BenchmarkSplitSymbols(b *testing.B) {
singleSymInsns := asm.Instructions{
asm.Return().WithSymbol("sym1"),
}
for i := 0; i < 25565; i++ {
singleSymInsns = append(singleSymInsns, asm.Mov.Imm(asm.R0, 0))
}

multiSymInsns := make(asm.Instructions, len(singleSymInsns))
copy(multiSymInsns, singleSymInsns)
multiSymInsns[len(multiSymInsns)-1] = multiSymInsns[len(multiSymInsns)-1].WithSymbol("sym2")

b.Run("single symbol", func(b *testing.B) {
for i := 0; i < b.N; i++ {
_, err := splitSymbols(singleSymInsns)
if err != nil {
b.Fatal(err)
}
}
})

b.Run("multiple symbols", func(b *testing.B) {
for i := 0; i < b.N; i++ {
_, err := splitSymbols(multiSymInsns)
if err != nil {
b.Fatal(err)
}
}
})
}

0 comments on commit 9d7b642

Please sign in to comment.