summaryrefslogtreecommitdiff
path: root/workhorse/internal/lsif_transformer/parser/performance_test.go
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-12-17 11:59:07 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-12-17 11:59:07 +0000
commit8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca (patch)
tree544930fb309b30317ae9797a9683768705d664c4 /workhorse/internal/lsif_transformer/parser/performance_test.go
parent4b1de649d0168371549608993deac953eb692019 (diff)
downloadgitlab-ce-8b573c94895dc0ac0e1d9d59cf3e8745e8b539ca.tar.gz
Add latest changes from gitlab-org/gitlab@13-7-stable-eev13.7.0-rc42
Diffstat (limited to 'workhorse/internal/lsif_transformer/parser/performance_test.go')
-rw-r--r--workhorse/internal/lsif_transformer/parser/performance_test.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/workhorse/internal/lsif_transformer/parser/performance_test.go b/workhorse/internal/lsif_transformer/parser/performance_test.go
new file mode 100644
index 00000000000..5a12d90072f
--- /dev/null
+++ b/workhorse/internal/lsif_transformer/parser/performance_test.go
@@ -0,0 +1,47 @@
+package parser
+
+import (
+ "context"
+ "io"
+ "io/ioutil"
+ "os"
+ "runtime"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func BenchmarkGenerate(b *testing.B) {
+ filePath := "testdata/workhorse.lsif.zip"
+ tmpDir := filePath + ".tmp"
+ defer os.RemoveAll(tmpDir)
+
+ var memoryUsage float64
+ for i := 0; i < b.N; i++ {
+ memoryUsage += measureMemory(func() {
+ file, err := os.Open(filePath)
+ require.NoError(b, err)
+
+ parser, err := NewParser(context.Background(), file, Config{})
+ require.NoError(b, err)
+
+ _, err = io.Copy(ioutil.Discard, parser)
+ require.NoError(b, err)
+ require.NoError(b, parser.Close())
+ })
+ }
+
+ b.ReportMetric(memoryUsage/float64(b.N), "MiB/op")
+}
+
+func measureMemory(f func()) float64 {
+ var m, m1 runtime.MemStats
+ runtime.ReadMemStats(&m)
+
+ f()
+
+ runtime.ReadMemStats(&m1)
+ runtime.GC()
+
+ return float64(m1.Alloc-m.Alloc) / 1024 / 1024
+}