@@ -21,10 +21,37 @@ import Valkey
21
21
22
22
@available ( valkeySwift 1 . 0 , * )
23
23
func connectionBenchmarks( ) {
24
+ makeConnectionCreateAndDropBenchmark ( )
24
25
makeConnectionGETBenchmark ( )
25
26
makeConnectionPipelineBenchmark ( )
26
27
}
27
28
29
+ @available ( valkeySwift 1 . 0 , * )
30
+ @discardableResult
31
+ func makeConnectionCreateAndDropBenchmark( ) -> Benchmark ? {
32
+ let serverMutex = Mutex < ( any Channel ) ? > ( nil )
33
+
34
+ return Benchmark ( " Connection: Create and drop benchmark " , configuration: . init( metrics: defaultMetrics, scalingFactor: . kilo) ) { benchmark in
35
+ let port = serverMutex. withLock { $0 } !. localAddress!. port!
36
+ let logger = Logger ( label: " test " )
37
+ benchmark. startMeasurement ( )
38
+ for _ in benchmark. scaledIterations {
39
+ try await ValkeyConnection . withConnection (
40
+ address: . hostname( " 127.0.0.1 " , port: port) ,
41
+ configuration: . init( ) ,
42
+ logger: logger
43
+ ) { _ in
44
+ }
45
+ }
46
+ benchmark. stopMeasurement ( )
47
+ } setup: {
48
+ let server = try await makeLocalServer ( )
49
+ serverMutex. withLock { $0 = server }
50
+ } teardown: {
51
+ try await serverMutex. withLock { $0 } ? . close ( ) . get ( )
52
+ }
53
+ }
54
+
28
55
@available ( valkeySwift 1 . 0 , * )
29
56
@discardableResult
30
57
func makeConnectionGETBenchmark( ) -> Benchmark ? {
0 commit comments