From 48e60a77278f908a3e9a8ddd2f76e698bc3a4352 Mon Sep 17 00:00:00 2001 From: John McDonnell Date: Wed, 6 Sep 2023 15:52:59 +0100 Subject: Add repositoryService.CreateRepository benchtest --- test/perf/README.md | 57 +++++++++++ .../services/repository/CreateRepository_baseline | 105 +++++++++++++++++++++ test/perf/services/repository/CreateRepository_new | 15 +++ .../repository/CreateRepository_new_no_diff | 105 +++++++++++++++++++++ .../services/repository/create_repository_test.go | 51 ++++++++++ 5 files changed, 333 insertions(+) create mode 100644 test/perf/README.md create mode 100644 test/perf/services/repository/CreateRepository_baseline create mode 100644 test/perf/services/repository/CreateRepository_new create mode 100644 test/perf/services/repository/CreateRepository_new_no_diff create mode 100644 test/perf/services/repository/create_repository_test.go 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()) + } +} -- cgit v1.2.3