Skip to content

Commit 6dc767f

Browse files
committed
ci: update benchmark runner
1 parent 7c4cc52 commit 6dc767f

File tree

44 files changed

+791
-452
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+791
-452
lines changed

package-lock.json

Lines changed: 131 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@
6363
"@swc/core": "^1.2.135",
6464
"ava": "^5.0.0",
6565
"aws-sdk-client-mock": "^3.0.0",
66-
"benchmark": "^2.1.4",
6766
"c8": "^8.0.0",
6867
"husky": "^8.0.0",
6968
"lerna": "^6.0.0",
7069
"lint-staged": "^15.0.0",
7170
"prettier": "^3.0.0",
7271
"sinon": "^17.0.0",
72+
"tinybench": "^2.5.1",
7373
"ts-standard": "^12.0.0",
7474
"tsd": "^0.29.0"
7575
},

packages/appconfig/__benchmarks__/index.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Benchmark from 'benchmark'
1+
import { Bench } from 'tinybench'
22
import middy from '../../core/index.js'
33
import middleware from '../index.js'
44

@@ -8,7 +8,7 @@ import {
88
GetSecretValueCommand
99
} from '@aws-sdk/client-appconfig'
1010

11-
const suite = new Benchmark.Suite('@middy/appconfig')
11+
const bench = new Bench({ time: 1_000 })
1212

1313
const context = {
1414
getRemainingTimeInMillis: () => 30000
@@ -29,7 +29,7 @@ const setupHandler = (options = {}) => {
2929
const coldHandler = setupHandler({ cacheExpiry: 0 })
3030
const warmHandler = setupHandler()
3131

32-
suite
32+
await bench
3333
.add('without cache', async (event = {}) => {
3434
try {
3535
await coldHandler(event, context)
@@ -40,7 +40,7 @@ suite
4040
await warmHandler(event, context)
4141
} catch (e) {}
4242
})
43-
.on('cycle', (event) => {
44-
console.log(suite.name, String(event.target))
45-
})
46-
.run({ async: true })
43+
44+
.run()
45+
46+
console.table(bench.table())

packages/cloudwatch-metrics/__benchmarks__/index.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
/*
2-
import Benchmark from 'benchmark'
2+
import { Bench } from 'tinybench'
33
import middy from '../../core/index.js'
44
import middleware from '../index.js'
55
6-
const suite = new Benchmark.Suite('@middy/cloudwatch-metrics')
6+
const bench = new Bench({ time: 1_000 })
77
88
const context = {
99
getRemainingTimeInMillis: () => 30000
@@ -17,7 +17,7 @@ const setupHandler = () => {
1717
const warmHandler = setupHandler()
1818
1919
// TODO fix error
20-
suite
20+
await bench
2121
.add('Cold Invocation', async (event = {}) => {
2222
const coldHandler = setupHandler()
2323
try {
@@ -29,7 +29,7 @@ suite
2929
await warmHandler(event, context)
3030
} catch (e) {}
3131
})
32-
.on('cycle', (event) => {
33-
console.log(suite.name, String(event.target))
34-
})
35-
.run({ async: true }) */
32+
33+
.run()
34+
35+
console.table(bench.table()) */

packages/core/__benchmarks__/index.js

Lines changed: 84 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,102 @@
1-
import Benchmark from 'benchmark'
1+
import { Bench } from 'tinybench'
22
import middy from '../index.js'
33

4-
const suite = new Benchmark.Suite('@middy/core')
4+
const bench = new Bench({ time: 1_000 })
55

6+
const middleware = (opts = {}) => {
7+
const middlewareBefore = (request) => {}
8+
const middlewareAfter = (request) => {}
9+
const middlewareOnError = (request) => {
10+
if (request.response !== undefined) return
11+
middlewareAfter(request)
12+
}
13+
return {
14+
before: middlewareBefore,
15+
after: middlewareAfter,
16+
onError: middlewareOnError
17+
}
18+
}
19+
const middlewareAsync = (opts = {}) => {
20+
const middlewareBefore = async (request) => {}
21+
const middlewareAfter = async (request) => {}
22+
const middlewareOnError = async (request) => {
23+
if (request.response !== undefined) return
24+
await middlewareAfter(request)
25+
}
26+
return {
27+
before: middlewareBefore,
28+
after: middlewareAfter,
29+
onError: middlewareOnError
30+
}
31+
}
32+
const baseHandler = () => {}
33+
const baseHandlerAsync = async () => {}
634
const context = {
735
getRemainingTimeInMillis: () => 30000
836
}
9-
const setupHandler = (timeoutEarlyInMillis = 0) => {
10-
const baseHandler = () => {}
11-
return middy(baseHandler, { timeoutEarlyInMillis })
12-
}
1337

14-
const warmHandler = setupHandler()
15-
const warmtimeoutHandler = setupHandler(1000)
38+
const warmHandler = middy().handler(baseHandler)
39+
const warmAsyncHandler = middy().handler(baseHandlerAsync)
40+
const middlewares = new Array(25)
41+
middlewares.fill(middleware())
42+
const warmMiddlewareHandler = middy().use(middlewares).handler(baseHandler)
43+
const middlewaresAsync = new Array(25)
44+
middlewaresAsync.fill(middlewareAsync())
45+
const warmAsyncMiddlewareHandler = middy()
46+
.use(middlewaresAsync)
47+
.handler(baseHandler)
48+
const warmTimeoutHandler = middy({ timeoutEarlyInMillis: 0 }).handler(
49+
baseHandler
50+
)
51+
52+
// const warmNextHandler = middyNext().handler(baseHandler)
53+
// const warmNextMiddlewareHandler = middyNext()
54+
// .use([middleware()])
55+
// .handler(baseHandler)
56+
// const warmNextAsyncMiddlewareHandler = middyNext()
57+
// .use([middlewareAsync()])
58+
// .handler(baseHandler)
59+
// const warmNextTimeoutHandler = middyNext({ timeoutEarlyInMillis: 0 }).handler(
60+
// baseHandler
61+
// )
1662

17-
suite
63+
await bench
1864
.add('Cold Invocation', async (event = {}) => {
19-
const coldHandler = setupHandler()
65+
const coldHandler = middy().handler(baseHandler)
2066
await coldHandler(event, context)
2167
})
22-
.add('Cold Invocation w/ Timeout', async (event = {}) => {
23-
const coldHandler = setupHandler(1000)
68+
.add('Cold Invocation with middleware', async (event = {}) => {
69+
const middlewares = new Array(25)
70+
middlewares.fill(middleware())
71+
const coldHandler = middy().use(middlewares).handler(baseHandler)
2472
await coldHandler(event, context)
2573
})
2674
.add('Warm Invocation', async (event = {}) => {
2775
await warmHandler(event, context)
2876
})
29-
.add('Warm Invocation with Timeout', async (event = {}) => {
30-
await warmtimeoutHandler(event, context)
77+
// .add('Warm Invocation * next', async (event = {}) => {
78+
// await warmNextHandler(event, context)
79+
// })
80+
.add('Warm Async Invocation', async (event = {}) => {
81+
await warmAsyncHandler(event, context)
3182
})
32-
.on('cycle', (event) => {
33-
console.log(suite.name, String(event.target))
83+
.add('Warm Invocation without Timeout', async (event = {}) => {
84+
await warmTimeoutHandler(event, context)
3485
})
35-
.run({ async: true })
86+
// .add('Warm Invocation with Timeout * next', async (event = {}) => {
87+
// await warmNextTimeoutHandler(event, context)
88+
// })
89+
// TODO StreamifyResponse
90+
.add('Warm Invocation with middleware', async (event = {}) => {
91+
await warmMiddlewareHandler(event, context)
92+
})
93+
// .add('Warm Invocation with middleware * next', async (event = {}) => {
94+
// await warmNextMiddlewareHandler(event, context)
95+
// })
96+
.add('Warm Invocation with async middleware', async (event = {}) => {
97+
await warmAsyncMiddlewareHandler(event, context)
98+
})
99+
100+
.run()
101+
102+
console.table(bench.table())

0 commit comments

Comments
 (0)