internal/runtime/cgobench: add Go function call benchmark for comparison

Change-Id: I0ada7fa02eb5f18a78da17bdcfc63333abbd8450
Reviewed-on: https://go-review.googlesource.com/c/go/+/713284
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
This commit is contained in:
Michael Anthony Knyszek 2025-10-16 00:58:20 +00:00 committed by Gopher Robot
parent b24aec598b
commit 710abf74da
2 changed files with 24 additions and 6 deletions

View file

@ -11,30 +11,44 @@ import (
"testing"
)
func BenchmarkCgoCall(b *testing.B) {
func BenchmarkCall(b *testing.B) {
for b.Loop() {
cgobench.Empty()
}
}
func BenchmarkCallParallel(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
cgobench.Empty()
}
})
}
func BenchmarkCgoCall(b *testing.B) {
for b.Loop() {
cgobench.EmptyC()
}
}
func BenchmarkCgoCallParallel(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
cgobench.Empty()
cgobench.EmptyC()
}
})
}
func BenchmarkCgoCallWithCallback(b *testing.B) {
for b.Loop() {
cgobench.Callback()
cgobench.CallbackC()
}
}
func BenchmarkCgoCallParallelWithCallback(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
cgobench.Callback()
cgobench.CallbackC()
}
})
}

View file

@ -19,14 +19,18 @@ static void callback() {
*/
import "C"
func Empty() {
func EmptyC() {
C.empty()
}
func Callback() {
func CallbackC() {
C.callback()
}
//export go_empty_callback
func go_empty_callback() {
}
//go:noinline
func Empty() {
}