Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn McDonnell <jmcdonnell@gitlab.com>2023-09-06 17:52:59 +0300
committerJohn McDonnell <jmcdonnell@gitlab.com>2023-09-06 17:52:59 +0300
commit48e60a77278f908a3e9a8ddd2f76e698bc3a4352 (patch)
tree0c0d2b784dcbd6d4738cf82d07a15f816e3b0437
parentcd49ee59b26a1206adb247ab2f71f46c1c1fde80 (diff)
Add repositoryService.CreateRepository benchtestjmd/microbenchmark
-rw-r--r--test/perf/README.md57
-rw-r--r--test/perf/services/repository/CreateRepository_baseline105
-rw-r--r--test/perf/services/repository/CreateRepository_new15
-rw-r--r--test/perf/services/repository/CreateRepository_new_no_diff105
-rw-r--r--test/perf/services/repository/create_repository_test.go51
5 files changed, 333 insertions, 0 deletions
diff --git a/test/perf/README.md b/test/perf/README.md
new file mode 100644
index 000000000..e9557d2bb
--- /dev/null
+++ b/test/perf/README.md
@@ -0,0 +1,57 @@
+
+1. Generate a baseline for the service `go test ./services/repository -bench . -benchmem -count=100 > ./services/repository/CreateRepository_baseline`
+1. Make some code changes that may impact the service
+1. Run the benchmark again `go test ./services/repository -bench . -benchmem -count=100 > ./services/repository/CreateRepository_new`
+1. Use https://pkg.go.dev/golang.org/x/perf/cmd/benchstat to generate report of differences
+ 1. `go install golang.org/x/perf/cmd/benchstat@latest`
+ 1. `benchstat ./services/repository/CreateRepository_baseline ./services/repository/CreateRepository_new`
+
+
+
+We need to look at the `vs base` values to see how the service behaves when compared to the baseline.
+It's important to note both the delta, but also the p value which determines the statistical significance of the delta, with a lower value indicating a greater statistical significance
+
+
+### Sample Report detecting difference
+
+In this report we see +112.91% in sec/op, +44.12% B/op, +55.08% allocs/op all with a p=0.000 indicating a statistically significant change
+
+```
+goos: darwin
+goarch: arm64
+pkg: gitlab.com/gitlab-org/gitaly/v16/test/perf/services/repository
+│ ./services/repository/CreateRepository_baseline │ ./services/repository/CreateRepository_new │
+│ sec/op │ sec/op vs base │
+_CreateRepository-10 95.62m ± 5% 203.59m ± 9% +112.91% (p=0.000 n=10)
+
+ │ ./services/repository/CreateRepository_baseline │ ./services/repository/CreateRepository_new │
+ │ B/op │ B/op vs base │
+_CreateRepository-10 343.3Ki ± 11% 494.8Ki ± 11% +44.12% (p=0.000 n=10)
+
+ │ ./services/repository/CreateRepository_baseline │ ./services/repository/CreateRepository_new │
+ │ allocs/op │ allocs/op vs base │
+_CreateRepository-10 2.567k ± 11% 3.981k ± 14% +55.08% (p=0.000 n=10)
+
+```
+
+
+### Sample Report detecting no difference
+
+In this report we note the deltas record a ~ which indicates no change in behaviour, (n=100 indicates 100 samples used)
+```
+goos: darwin
+goarch: arm64
+pkg: gitlab.com/gitlab-org/gitaly/v16/test/perf/services/repository
+ │ ./services/repository/CreateRepository_baseline │ ./services/repository/CreateRepository_new_no_diff │
+ │ sec/op │ sec/op vs base │
+_CreateRepository-10 87.56m ± 2% 88.30m ± 2% ~ (p=0.064 n=100)
+
+ │ ./services/repository/CreateRepository_baseline │ ./services/repository/CreateRepository_new_no_diff │
+ │ B/op │ B/op vs base │
+_CreateRepository-10 332.4Ki ± 3% 332.1Ki ± 3% ~ (p=0.909 n=100)
+
+ │ ./services/repository/CreateRepository_baseline │ ./services/repository/CreateRepository_new_no_diff │
+ │ allocs/op │ allocs/op vs base │
+_CreateRepository-10 2.462k ± 4% 2.460k ± 4% ~ (p=0.688 n=100)
+
+```
diff --git a/test/perf/services/repository/CreateRepository_baseline b/test/perf/services/repository/CreateRepository_baseline
new file mode 100644
index 000000000..5fc9bdf90
--- /dev/null
+++ b/test/perf/services/repository/CreateRepository_baseline
@@ -0,0 +1,105 @@
+goos: darwin
+goarch: arm64
+pkg: gitlab.com/gitlab-org/gitaly/v16/test/perf/services/repository
+Benchmark_CreateRepository-10 25 85666722 ns/op 269676 B/op 1834 allocs/op
+Benchmark_CreateRepository-10 12 91348684 ns/op 357448 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 14 88575890 ns/op 323260 B/op 2362 allocs/op
+Benchmark_CreateRepository-10 12 89520250 ns/op 349802 B/op 2566 allocs/op
+Benchmark_CreateRepository-10 13 94205869 ns/op 343214 B/op 2459 allocs/op
+Benchmark_CreateRepository-10 12 93371208 ns/op 353537 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 15 75171919 ns/op 319573 B/op 2282 allocs/op
+Benchmark_CreateRepository-10 19 81551423 ns/op 295277 B/op 2047 allocs/op
+Benchmark_CreateRepository-10 20 82896265 ns/op 289809 B/op 2002 allocs/op
+Benchmark_CreateRepository-10 15 83240722 ns/op 319256 B/op 2282 allocs/op
+Benchmark_CreateRepository-10 15 84104383 ns/op 308692 B/op 2281 allocs/op
+Benchmark_CreateRepository-10 12 88797361 ns/op 352988 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 15 93361533 ns/op 319613 B/op 2285 allocs/op
+Benchmark_CreateRepository-10 12 89756778 ns/op 352792 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 14 89455759 ns/op 332039 B/op 2368 allocs/op
+Benchmark_CreateRepository-10 13 90869875 ns/op 339795 B/op 2458 allocs/op
+Benchmark_CreateRepository-10 12 93714830 ns/op 356060 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 12 88410736 ns/op 353552 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 15 76695278 ns/op 319330 B/op 2285 allocs/op
+Benchmark_CreateRepository-10 15 67094408 ns/op 317378 B/op 2285 allocs/op
+Benchmark_CreateRepository-10 15 79674686 ns/op 322892 B/op 2288 allocs/op
+Benchmark_CreateRepository-10 13 81917426 ns/op 340346 B/op 2460 allocs/op
+Benchmark_CreateRepository-10 12 86936410 ns/op 352980 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 19 87072829 ns/op 294895 B/op 2046 allocs/op
+Benchmark_CreateRepository-10 13 84534551 ns/op 336486 B/op 2456 allocs/op
+Benchmark_CreateRepository-10 12 88777038 ns/op 356351 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 12 84684340 ns/op 349768 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 14 84437092 ns/op 326444 B/op 2366 allocs/op
+Benchmark_CreateRepository-10 12 84984062 ns/op 349576 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 14 83335205 ns/op 326722 B/op 2368 allocs/op
+Benchmark_CreateRepository-10 15 78254614 ns/op 319002 B/op 2285 allocs/op
+Benchmark_CreateRepository-10 12 86941028 ns/op 352747 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 13 83501183 ns/op 339129 B/op 2457 allocs/op
+Benchmark_CreateRepository-10 16 86658242 ns/op 314372 B/op 2218 allocs/op
+Benchmark_CreateRepository-10 12 87577708 ns/op 352870 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 12 88512333 ns/op 353118 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 13 90388750 ns/op 339965 B/op 2459 allocs/op
+Benchmark_CreateRepository-10 12 83725375 ns/op 351879 B/op 2565 allocs/op
+Benchmark_CreateRepository-10 12 91061115 ns/op 356753 B/op 2572 allocs/op
+Benchmark_CreateRepository-10 12 89665715 ns/op 356567 B/op 2572 allocs/op
+Benchmark_CreateRepository-10 12 97505472 ns/op 350048 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 12 89618132 ns/op 349992 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 13 92611381 ns/op 327481 B/op 2458 allocs/op
+Benchmark_CreateRepository-10 16 74173268 ns/op 311092 B/op 2215 allocs/op
+Benchmark_CreateRepository-10 14 91817759 ns/op 326907 B/op 2369 allocs/op
+Benchmark_CreateRepository-10 12 89180965 ns/op 349043 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 12 90873694 ns/op 349265 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 12 90397892 ns/op 353308 B/op 2573 allocs/op
+Benchmark_CreateRepository-10 12 86885663 ns/op 352168 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 12 89030375 ns/op 352610 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 12 84012938 ns/op 352161 B/op 2566 allocs/op
+Benchmark_CreateRepository-10 12 91496622 ns/op 356578 B/op 2572 allocs/op
+Benchmark_CreateRepository-10 15 92390122 ns/op 319771 B/op 2286 allocs/op
+Benchmark_CreateRepository-10 12 86956146 ns/op 350036 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 15 85800808 ns/op 320146 B/op 2287 allocs/op
+Benchmark_CreateRepository-10 14 82520938 ns/op 329051 B/op 2368 allocs/op
+Benchmark_CreateRepository-10 12 91582194 ns/op 352636 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 10 125998442 ns/op 382646 B/op 2853 allocs/op
+Benchmark_CreateRepository-10 12 90574458 ns/op 356245 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 13 92543926 ns/op 340326 B/op 2461 allocs/op
+Benchmark_CreateRepository-10 13 92104061 ns/op 334786 B/op 2463 allocs/op
+Benchmark_CreateRepository-10 14 84717048 ns/op 329485 B/op 2368 allocs/op
+Benchmark_CreateRepository-10 13 77647385 ns/op 339751 B/op 2460 allocs/op
+Benchmark_CreateRepository-10 16 80365292 ns/op 309023 B/op 2215 allocs/op
+Benchmark_CreateRepository-10 15 83808567 ns/op 319781 B/op 2286 allocs/op
+Benchmark_CreateRepository-10 15 78993931 ns/op 319797 B/op 2285 allocs/op
+Benchmark_CreateRepository-10 12 88109917 ns/op 352622 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 12 85172840 ns/op 350006 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 13 88008994 ns/op 337624 B/op 2462 allocs/op
+Benchmark_CreateRepository-10 12 90478226 ns/op 349483 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 12 87111750 ns/op 356031 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 12 88146385 ns/op 357173 B/op 2572 allocs/op
+Benchmark_CreateRepository-10 12 89305042 ns/op 342118 B/op 2565 allocs/op
+Benchmark_CreateRepository-10 14 81404914 ns/op 332186 B/op 2369 allocs/op
+Benchmark_CreateRepository-10 20 82430260 ns/op 289944 B/op 2004 allocs/op
+Benchmark_CreateRepository-10 15 85589131 ns/op 316803 B/op 2285 allocs/op
+Benchmark_CreateRepository-10 19 84666344 ns/op 294829 B/op 2046 allocs/op
+Benchmark_CreateRepository-10 22 89851716 ns/op 278578 B/op 1925 allocs/op
+Benchmark_CreateRepository-10 14 86152702 ns/op 332296 B/op 2369 allocs/op
+Benchmark_CreateRepository-10 12 95527972 ns/op 349737 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 13 87538215 ns/op 339262 B/op 2457 allocs/op
+Benchmark_CreateRepository-10 12 93666392 ns/op 352702 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 13 87373180 ns/op 334808 B/op 2463 allocs/op
+Benchmark_CreateRepository-10 13 88441612 ns/op 343596 B/op 2463 allocs/op
+Benchmark_CreateRepository-10 13 84051494 ns/op 342638 B/op 2461 allocs/op
+Benchmark_CreateRepository-10 12 84415767 ns/op 352950 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 13 85884327 ns/op 337661 B/op 2463 allocs/op
+Benchmark_CreateRepository-10 18 85165569 ns/op 303250 B/op 2098 allocs/op
+Benchmark_CreateRepository-10 12 88027122 ns/op 352957 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 20 89795929 ns/op 291707 B/op 2003 allocs/op
+Benchmark_CreateRepository-10 12 89434101 ns/op 352531 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 12 90854326 ns/op 352916 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 12 90389274 ns/op 349713 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 12 85557229 ns/op 353215 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 16 82113339 ns/op 311219 B/op 2215 allocs/op
+Benchmark_CreateRepository-10 20 83609050 ns/op 291494 B/op 2002 allocs/op
+Benchmark_CreateRepository-10 16 76962161 ns/op 317099 B/op 2220 allocs/op
+Benchmark_CreateRepository-10 12 90153680 ns/op 356270 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 14 88107098 ns/op 326014 B/op 2365 allocs/op
+Benchmark_CreateRepository-10 12 90060004 ns/op 352868 B/op 2569 allocs/op
+PASS
+ok gitlab.com/gitlab-org/gitaly/v16/test/perf/services/repository 154.187s
diff --git a/test/perf/services/repository/CreateRepository_new b/test/perf/services/repository/CreateRepository_new
new file mode 100644
index 000000000..7286afa85
--- /dev/null
+++ b/test/perf/services/repository/CreateRepository_new
@@ -0,0 +1,15 @@
+goos: darwin
+goarch: arm64
+pkg: gitlab.com/gitlab-org/gitaly/v16/test/perf/services/repository
+Benchmark_CreateRepository-10 6 167771819 ns/op 515418 B/op 3991 allocs/op
+Benchmark_CreateRepository-10 5 211097033 ns/op 563513 B/op 4544 allocs/op
+Benchmark_CreateRepository-10 6 218541694 ns/op 506169 B/op 3976 allocs/op
+Benchmark_CreateRepository-10 7 203891327 ns/op 467363 B/op 3579 allocs/op
+Benchmark_CreateRepository-10 6 210752361 ns/op 513078 B/op 3984 allocs/op
+Benchmark_CreateRepository-10 6 201083646 ns/op 506017 B/op 3977 allocs/op
+Benchmark_CreateRepository-10 6 185229125 ns/op 499548 B/op 3978 allocs/op
+Benchmark_CreateRepository-10 6 203291340 ns/op 506945 B/op 3985 allocs/op
+Benchmark_CreateRepository-10 5 215656900 ns/op 562723 B/op 4547 allocs/op
+Benchmark_CreateRepository-10 6 201047326 ns/op 506389 B/op 3978 allocs/op
+PASS
+ok gitlab.com/gitlab-org/gitaly/v16/test/perf/services/repository 19.473s
diff --git a/test/perf/services/repository/CreateRepository_new_no_diff b/test/perf/services/repository/CreateRepository_new_no_diff
new file mode 100644
index 000000000..aef245a58
--- /dev/null
+++ b/test/perf/services/repository/CreateRepository_new_no_diff
@@ -0,0 +1,105 @@
+goos: darwin
+goarch: arm64
+pkg: gitlab.com/gitlab-org/gitaly/v16/test/perf/services/repository
+Benchmark_CreateRepository-10 26 84419234 ns/op 263109 B/op 1805 allocs/op
+Benchmark_CreateRepository-10 12 90062948 ns/op 353667 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 13 84256429 ns/op 340342 B/op 2457 allocs/op
+Benchmark_CreateRepository-10 13 83162288 ns/op 334046 B/op 2457 allocs/op
+Benchmark_CreateRepository-10 13 86505260 ns/op 328074 B/op 2455 allocs/op
+Benchmark_CreateRepository-10 12 89108962 ns/op 353321 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 10 100280296 ns/op 390559 B/op 2854 allocs/op
+Benchmark_CreateRepository-10 13 79187763 ns/op 333529 B/op 2457 allocs/op
+Benchmark_CreateRepository-10 12 85521427 ns/op 352903 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 12 83742031 ns/op 352330 B/op 2566 allocs/op
+Benchmark_CreateRepository-10 12 85886618 ns/op 352771 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 16 85811544 ns/op 313241 B/op 2213 allocs/op
+Benchmark_CreateRepository-10 16 83339331 ns/op 308457 B/op 2213 allocs/op
+Benchmark_CreateRepository-10 18 73822039 ns/op 300675 B/op 2095 allocs/op
+Benchmark_CreateRepository-10 13 91143647 ns/op 342751 B/op 2458 allocs/op
+Benchmark_CreateRepository-10 14 100977363 ns/op 326082 B/op 2366 allocs/op
+Benchmark_CreateRepository-10 12 92040566 ns/op 349112 B/op 2565 allocs/op
+Benchmark_CreateRepository-10 12 98917014 ns/op 346079 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 12 92306826 ns/op 350218 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 16 85081060 ns/op 303346 B/op 2212 allocs/op
+Benchmark_CreateRepository-10 20 86501081 ns/op 289820 B/op 2002 allocs/op
+Benchmark_CreateRepository-10 16 87404755 ns/op 311131 B/op 2214 allocs/op
+Benchmark_CreateRepository-10 14 89220872 ns/op 329423 B/op 2366 allocs/op
+Benchmark_CreateRepository-10 14 87343756 ns/op 317220 B/op 2363 allocs/op
+Benchmark_CreateRepository-10 12 85951792 ns/op 352928 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 12 88505670 ns/op 352998 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 12 93149444 ns/op 342987 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 12 93156021 ns/op 355836 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 12 92925587 ns/op 356552 B/op 2573 allocs/op
+Benchmark_CreateRepository-10 14 80097932 ns/op 329394 B/op 2367 allocs/op
+Benchmark_CreateRepository-10 14 89026914 ns/op 326560 B/op 2367 allocs/op
+Benchmark_CreateRepository-10 14 87866598 ns/op 332102 B/op 2369 allocs/op
+Benchmark_CreateRepository-10 12 85154410 ns/op 349409 B/op 2566 allocs/op
+Benchmark_CreateRepository-10 14 93022220 ns/op 317465 B/op 2364 allocs/op
+Benchmark_CreateRepository-10 12 89869378 ns/op 353069 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 14 91848768 ns/op 329346 B/op 2368 allocs/op
+Benchmark_CreateRepository-10 12 91792014 ns/op 352330 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 12 94289944 ns/op 352792 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 12 87063073 ns/op 356337 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 12 84915878 ns/op 353019 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 13 81742750 ns/op 339663 B/op 2457 allocs/op
+Benchmark_CreateRepository-10 15 85148658 ns/op 321806 B/op 2284 allocs/op
+Benchmark_CreateRepository-10 15 76640528 ns/op 319670 B/op 2286 allocs/op
+Benchmark_CreateRepository-10 12 88164663 ns/op 349116 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 13 86891349 ns/op 339966 B/op 2460 allocs/op
+Benchmark_CreateRepository-10 19 88292320 ns/op 297071 B/op 2047 allocs/op
+Benchmark_CreateRepository-10 13 94649234 ns/op 337542 B/op 2460 allocs/op
+Benchmark_CreateRepository-10 12 92331660 ns/op 349776 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 12 92730306 ns/op 353005 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 12 93386510 ns/op 352778 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 13 91001894 ns/op 342945 B/op 2460 allocs/op
+Benchmark_CreateRepository-10 12 84841590 ns/op 349757 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 15 88241714 ns/op 322738 B/op 2289 allocs/op
+Benchmark_CreateRepository-10 12 86269344 ns/op 349340 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 14 87820696 ns/op 329389 B/op 2367 allocs/op
+Benchmark_CreateRepository-10 13 93229577 ns/op 337376 B/op 2461 allocs/op
+Benchmark_CreateRepository-10 18 94454211 ns/op 300984 B/op 2098 allocs/op
+Benchmark_CreateRepository-10 12 91627882 ns/op 352063 B/op 2567 allocs/op
+Benchmark_CreateRepository-10 12 94236229 ns/op 356202 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 12 91149677 ns/op 352733 B/op 2569 allocs/op
+Benchmark_CreateRepository-10 12 94822649 ns/op 342409 B/op 2565 allocs/op
+Benchmark_CreateRepository-10 13 91565760 ns/op 340051 B/op 2461 allocs/op
+Benchmark_CreateRepository-10 21 91760036 ns/op 286211 B/op 1961 allocs/op
+Benchmark_CreateRepository-10 13 84650404 ns/op 336482 B/op 2458 allocs/op
+Benchmark_CreateRepository-10 14 88317396 ns/op 328795 B/op 2364 allocs/op
+Benchmark_CreateRepository-10 12 83658490 ns/op 350026 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 18 91531106 ns/op 303471 B/op 2098 allocs/op
+Benchmark_CreateRepository-10 12 89494754 ns/op 352508 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 12 94315170 ns/op 356515 B/op 2572 allocs/op
+Benchmark_CreateRepository-10 12 92756406 ns/op 355822 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 12 90928972 ns/op 353628 B/op 2573 allocs/op
+Benchmark_CreateRepository-10 12 85985406 ns/op 346020 B/op 2568 allocs/op
+Benchmark_CreateRepository-10 14 82732015 ns/op 326107 B/op 2365 allocs/op
+Benchmark_CreateRepository-10 14 86664000 ns/op 329218 B/op 2368 allocs/op
+Benchmark_CreateRepository-10 13 82795407 ns/op 339525 B/op 2459 allocs/op
+Benchmark_CreateRepository-10 15 88031283 ns/op 309941 B/op 2286 allocs/op
+Benchmark_CreateRepository-10 20 80739479 ns/op 289739 B/op 2002 allocs/op
+Benchmark_CreateRepository-10 14 87205155 ns/op 318698 B/op 2367 allocs/op
+Benchmark_CreateRepository-10 12 88274556 ns/op 353574 B/op 2572 allocs/op
+Benchmark_CreateRepository-10 13 88334343 ns/op 340086 B/op 2459 allocs/op
+Benchmark_CreateRepository-10 12 92862146 ns/op 356774 B/op 2573 allocs/op
+Benchmark_CreateRepository-10 12 90295618 ns/op 356208 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 14 76640301 ns/op 329535 B/op 2369 allocs/op
+Benchmark_CreateRepository-10 18 78660009 ns/op 301107 B/op 2098 allocs/op
+Benchmark_CreateRepository-10 14 76538518 ns/op 328182 B/op 2364 allocs/op
+Benchmark_CreateRepository-10 19 83674015 ns/op 291374 B/op 2046 allocs/op
+Benchmark_CreateRepository-10 14 91048521 ns/op 320505 B/op 2365 allocs/op
+Benchmark_CreateRepository-10 12 94613979 ns/op 349603 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 12 89890458 ns/op 353028 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 12 91865733 ns/op 353080 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 12 90057306 ns/op 353064 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 12 92220858 ns/op 352970 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 12 93292316 ns/op 353117 B/op 2570 allocs/op
+Benchmark_CreateRepository-10 18 82695720 ns/op 299074 B/op 2098 allocs/op
+Benchmark_CreateRepository-10 14 82459327 ns/op 326067 B/op 2365 allocs/op
+Benchmark_CreateRepository-10 12 85183917 ns/op 353110 B/op 2571 allocs/op
+Benchmark_CreateRepository-10 13 85105099 ns/op 337172 B/op 2459 allocs/op
+Benchmark_CreateRepository-10 13 89959843 ns/op 339958 B/op 2460 allocs/op
+Benchmark_CreateRepository-10 13 90110820 ns/op 333830 B/op 2458 allocs/op
+Benchmark_CreateRepository-10 13 85374933 ns/op 337536 B/op 2463 allocs/op
+PASS
+ok gitlab.com/gitlab-org/gitaly/v16/test/perf/services/repository 163.039s
diff --git a/test/perf/services/repository/create_repository_test.go b/test/perf/services/repository/create_repository_test.go
new file mode 100644
index 000000000..36b101171
--- /dev/null
+++ b/test/perf/services/repository/create_repository_test.go
@@ -0,0 +1,51 @@
+package repository
+
+import (
+ "context"
+ "fmt"
+ "github.com/stretchr/testify/assert"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/gitaly/service/setup"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testcfg"
+ "gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testserver"
+ "gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/credentials/insecure"
+ "testing"
+ "time"
+)
+
+func TestMain(m *testing.M) {
+ testhelper.Run(m)
+}
+
+func createRepositoryRequest() *gitalypb.CreateRepositoryRequest {
+ return &gitalypb.CreateRepositoryRequest{
+ Repository: &gitalypb.Repository{
+ StorageName: "default",
+ RelativePath: "test/perf/services/repository/createRepository/" + fmt.Sprint(time.Now().UnixNano()),
+ GitObjectDirectory: "",
+ GitAlternateObjectDirectories: nil,
+ GlRepository: "",
+ GlProjectPath: "",
+ },
+ DefaultBranch: []byte("createRepository"),
+ ObjectFormat: gitalypb.ObjectFormat_OBJECT_FORMAT_SHA1,
+ }
+}
+
+func Benchmark_CreateRepository(b *testing.B) {
+ cfg := testcfg.Build(b)
+ cfg.SocketPath = testserver.RunGitalyServer(b, cfg, setup.RegisterAll)
+ conn, _ := grpc.Dial(cfg.SocketPath, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ defer testhelper.MustClose(b, conn)
+ client := gitalypb.NewRepositoryServiceClient(conn)
+
+ for i := 0; i < b.N; i++ {
+ repo, err := client.CreateRepository(context.Background(), createRepositoryRequest())
+ if err != nil {
+ panic(err)
+ }
+ assert.Empty(b, repo.String())
+ }
+}