runtime: add cgo call benchmark

Change-Id: I12d2ae7dd6a33ecb7110b7d090871e7143fd609f
Reviewed-on: https://go-review.googlesource.com/c/go/+/646196
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
This commit is contained in:
Michael Anthony Knyszek 2025-02-03 15:42:55 +00:00 committed by Gopher Robot
parent 69338a335a
commit 70a2ff7648
3 changed files with 44 additions and 0 deletions

View file

@ -796,6 +796,7 @@ var depsRules = `
FMT < math/big/internal/asmgen;
FMT, testing < internal/cgrouptest;
C, CGO < internal/runtime/cgobench;
`
// listStdPkgs returns the same list of packages as "go list std".

View file

@ -0,0 +1,26 @@
// Copyright 2025 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build cgo
package cgobench_test
import (
"internal/runtime/cgobench"
"testing"
)
func BenchmarkCgoCall(b *testing.B) {
for b.Loop() {
cgobench.Empty()
}
}
func BenchmarkCgoCallParallel(b *testing.B) {
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
cgobench.Empty()
}
})
}

View file

@ -0,0 +1,17 @@
// Copyright 2025 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build cgo
package cgobench
/*
static void empty() {
}
*/
import "C"
func Empty() {
C.empty()
}