Skip to content

Commit dc7a3d3

Browse files
committed
Fix HTTP2StateMachine benchmark
The optimizer managed to eliminate this entire benchmark, resulting in useless 0 second timings. I made a couple of changes to ensure the optimizer cannot eliminate the loop: * The individual checks now actually use the loop parameter * `identity()` is used to ensure conservatism While here, I reduced the loop count since these benchmarks seem to run for a long time.
1 parent 5a2465e commit dc7a3d3

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

benchmark/single-source/HTTP2StateMachine.swift

+13-13
Original file line numberDiff line numberDiff line change
@@ -294,11 +294,11 @@ struct HTTP2StreamStateMachine {
294294
}
295295

296296
@inline(never)
297-
func testSimpleRequestResponse() -> Bool {
297+
func testSimpleRequestResponse(_ n: Int) -> Bool {
298298
var successful = true
299299

300-
var server = HTTP2StreamStateMachine(localRole: .server, localWindow: 1<<16, remoteWindow: 1<<16)
301-
var client = HTTP2StreamStateMachine(localRole: .client, localWindow: 1<<16, remoteWindow: 1<<16)
300+
var server = HTTP2StreamStateMachine(localRole: .server, localWindow: 1<<16, remoteWindow: n)
301+
var client = HTTP2StreamStateMachine(localRole: .client, localWindow: 1<<16, remoteWindow: n)
302302

303303
successful = successful && client.sendHeaders(isEndStreamSet: false)
304304
successful = successful && server.receiveHeaders(isEndStreamSet: false)
@@ -329,11 +329,11 @@ func testSimpleRequestResponse() -> Bool {
329329
}
330330

331331
@inline(never)
332-
func testPushedRequests() -> Bool {
332+
func testPushedRequests(_ n: Int) -> Bool {
333333
var successful = true
334334

335-
var server = HTTP2StreamStateMachine(sentPushPromiseWithLocalInitialWindowSize: 1<<16)
336-
var client = HTTP2StreamStateMachine(receivedPushPromiseWithRemoteInitialWindowSize: 1<<16)
335+
var server = HTTP2StreamStateMachine(sentPushPromiseWithLocalInitialWindowSize: n)
336+
var client = HTTP2StreamStateMachine(receivedPushPromiseWithRemoteInitialWindowSize: n)
337337

338338
successful = successful && client.sendWindowUpdate(windowIncrement: 1024)
339339

@@ -358,11 +358,11 @@ func testPushedRequests() -> Bool {
358358
}
359359

360360
@inline(never)
361-
func testPushingRequests() -> Bool {
361+
func testPushingRequests(_ n: Int) -> Bool {
362362
var successful = true
363363

364-
var server = HTTP2StreamStateMachine(localRole: .server, localWindow: 1<<16, remoteWindow: 1<<16)
365-
var client = HTTP2StreamStateMachine(localRole: .client, localWindow: 1<<16, remoteWindow: 1<<16)
364+
var server = HTTP2StreamStateMachine(localRole: .server, localWindow: 1<<16, remoteWindow: n)
365+
var client = HTTP2StreamStateMachine(localRole: .client, localWindow: 1<<16, remoteWindow: n)
366366

367367
successful = successful && client.sendHeaders(isEndStreamSet: true)
368368
successful = successful && server.receiveHeaders(isEndStreamSet: true)
@@ -381,10 +381,10 @@ func testPushingRequests() -> Bool {
381381

382382
@inline(never)
383383
func run_HTTP2StateMachine(_ n: Int) {
384-
for _ in 0 ..< 1000000 * n {
385-
check(testSimpleRequestResponse())
386-
check(testPushedRequests())
387-
check(testPushingRequests())
384+
for i in 0 ..< 100000 * n {
385+
check(testSimpleRequestResponse(identity(i)))
386+
check(testPushedRequests(identity(i)))
387+
check(testPushingRequests(identity(i)))
388388
}
389389
}
390390

0 commit comments

Comments
 (0)