summaryrefslogtreecommitdiff
path: root/internal/stupidgcm/common_test.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2021-09-05 12:17:38 +0200
committerJakob Unterwurzacher2021-09-07 18:14:05 +0200
commit6a0206897c83e1f3e4539d6a6c77149167f49626 (patch)
tree595bd444c56beaa2c405a9ba518acf852e06c70e /internal/stupidgcm/common_test.go
parenta2eaa5e3d1d9dfd8cf840076c215d253f82abf4b (diff)
stupidgcm: add BenchmarkCCall
gocryptfs/internal/stupidgcm$ go test -bench . goos: linux goarch: amd64 pkg: github.com/rfjakob/gocryptfs/v2/internal/stupidgcm cpu: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz BenchmarkCCall-4 15864030 78.60 ns/op PASS ok github.com/rfjakob/gocryptfs/v2/internal/stupidgcm 1.898s
Diffstat (limited to 'internal/stupidgcm/common_test.go')
-rw-r--r--internal/stupidgcm/common_test.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/internal/stupidgcm/common_test.go b/internal/stupidgcm/common_test.go
index a8080ca..589d974 100644
--- a/internal/stupidgcm/common_test.go
+++ b/internal/stupidgcm/common_test.go
@@ -208,3 +208,24 @@ func randBytes(n int) []byte {
}
return b
}
+
+/*
+BenchmarkCCall benchmarks the overhead of calling from Go into C.
+Looks like things improved a bit compared to
+https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/
+where they measured 171ns/op:
+
+$ go test -bench .
+goos: linux
+goarch: amd64
+pkg: github.com/rfjakob/gocryptfs/v2/internal/stupidgcm
+cpu: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz
+BenchmarkCCall-4 13989364 76.72 ns/op
+PASS
+ok github.com/rfjakob/gocryptfs/v2/internal/stupidgcm 1.735s
+*/
+func BenchmarkCCall(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ noopCFunction()
+ }
+}