Projektstart
This commit is contained in:
156
backend/node_modules/find-my-way/benchmark/bench.js
generated
vendored
Normal file
156
backend/node_modules/find-my-way/benchmark/bench.js
generated
vendored
Normal file
@@ -0,0 +1,156 @@
|
||||
'use strict'
|
||||
|
||||
const path = require('path')
|
||||
const { Worker } = require('worker_threads')
|
||||
|
||||
const BENCH_THREAD_PATH = path.join(__dirname, 'bench-thread.js')
|
||||
|
||||
const benchmarks = [
|
||||
{
|
||||
name: 'lookup root "/" route',
|
||||
setupURLs: [{ method: 'GET', url: '/' }],
|
||||
arguments: [{ method: 'GET', url: '/' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup short static route',
|
||||
setupURLs: [{ method: 'GET', url: '/static' }],
|
||||
arguments: [{ method: 'GET', url: '/static' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup long static route',
|
||||
setupURLs: [{ method: 'GET', url: '/static/static/static/static/static' }],
|
||||
arguments: [{ method: 'GET', url: '/static/static/static/static/static' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup long static route (common prefix)',
|
||||
setupURLs: [
|
||||
{ method: 'GET', url: '/static' },
|
||||
{ method: 'GET', url: '/static/static' },
|
||||
{ method: 'GET', url: '/static/static/static' },
|
||||
{ method: 'GET', url: '/static/static/static/static' },
|
||||
{ method: 'GET', url: '/static/static/static/static/static' }
|
||||
],
|
||||
arguments: [{ method: 'GET', url: '/static/static/static/static/static' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup short parametric route',
|
||||
setupURLs: [{ method: 'GET', url: '/:param' }],
|
||||
arguments: [{ method: 'GET', url: '/param1' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup long parametric route',
|
||||
setupURLs: [{ method: 'GET', url: '/:param' }],
|
||||
arguments: [{ method: 'GET', url: '/longParamParamParamParamParamParam' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup short parametric route (encoded unoptimized)',
|
||||
setupURLs: [{ method: 'GET', url: '/:param' }],
|
||||
arguments: [{ method: 'GET', url: '/param%2B' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup short parametric route (encoded optimized)',
|
||||
setupURLs: [{ method: 'GET', url: '/:param' }],
|
||||
arguments: [{ method: 'GET', url: '/param%20' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup parametric route with two short params',
|
||||
setupURLs: [{ method: 'GET', url: '/:param1/:param2' }],
|
||||
arguments: [{ method: 'GET', url: '/param1/param2' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup multi-parametric route with two short params',
|
||||
setupURLs: [{ method: 'GET', url: '/:param1-:param2' }],
|
||||
arguments: [{ method: 'GET', url: '/param1-param2' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup multi-parametric route with two short regex params',
|
||||
setupURLs: [{ method: 'GET', url: '/:param1([a-z]*)1:param2([a-z]*)2' }],
|
||||
arguments: [{ method: 'GET', url: '/param1param2' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup long static + parametric route',
|
||||
setupURLs: [{ method: 'GET', url: '/static/:param1/static/:param2/static' }],
|
||||
arguments: [{ method: 'GET', url: '/static/param1/static/param2/static' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup short wildcard route',
|
||||
setupURLs: [{ method: 'GET', url: '/*' }],
|
||||
arguments: [{ method: 'GET', url: '/static' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup long wildcard route',
|
||||
setupURLs: [{ method: 'GET', url: '/*' }],
|
||||
arguments: [{ method: 'GET', url: '/static/static/static/static/static' }]
|
||||
},
|
||||
{
|
||||
name: 'lookup root route on constrained router',
|
||||
setupURLs: [
|
||||
{ method: 'GET', url: '/' },
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '1.2.0' } } },
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '2.0.0', host: 'example.com' } } },
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '2.0.0', host: 'fastify.io' } } }
|
||||
],
|
||||
arguments: [{ method: 'GET', url: '/', headers: { host: 'fastify.io' } }]
|
||||
},
|
||||
{
|
||||
name: 'lookup short static unconstraint route',
|
||||
setupURLs: [
|
||||
{ method: 'GET', url: '/static', opts: {} },
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '2.0.0', host: 'example.com' } } },
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '2.0.0', host: 'fastify.io' } } }
|
||||
],
|
||||
arguments: [{ method: 'GET', url: '/static', headers: {} }]
|
||||
},
|
||||
{
|
||||
name: 'lookup short static versioned route',
|
||||
setupURLs: [
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '1.2.0' } } },
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '2.0.0', host: 'example.com' } } },
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '2.0.0', host: 'fastify.io' } } }
|
||||
],
|
||||
arguments: [{ method: 'GET', url: '/static', headers: { 'accept-version': '1.x', host: 'fastify.io' } }]
|
||||
},
|
||||
{
|
||||
name: 'lookup short static constrained (version & host) route',
|
||||
setupURLs: [
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '1.2.0' } } },
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '2.0.0', host: 'example.com' } } },
|
||||
{ method: 'GET', url: '/static', opts: { constraints: { version: '2.0.0', host: 'fastify.io' } } }
|
||||
],
|
||||
arguments: [{ method: 'GET', url: '/static', headers: { 'accept-version': '2.x', host: 'fastify.io' } }]
|
||||
}
|
||||
]
|
||||
|
||||
async function runBenchmark (benchmark) {
|
||||
const worker = new Worker(BENCH_THREAD_PATH, { workerData: benchmark })
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
let result = null
|
||||
worker.on('error', reject)
|
||||
worker.on('message', (benchResult) => {
|
||||
result = benchResult
|
||||
})
|
||||
worker.on('exit', (code) => {
|
||||
if (code === 0) {
|
||||
resolve(result)
|
||||
} else {
|
||||
reject(new Error(`Worker stopped with exit code ${code}`))
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
async function runBenchmarks () {
|
||||
let maxNameLength = 0
|
||||
for (const benchmark of benchmarks) {
|
||||
maxNameLength = Math.max(benchmark.name.length, maxNameLength)
|
||||
}
|
||||
|
||||
for (const benchmark of benchmarks) {
|
||||
benchmark.name = benchmark.name.padEnd(maxNameLength, '.')
|
||||
const resultMessage = await runBenchmark(benchmark)
|
||||
console.log(resultMessage)
|
||||
}
|
||||
}
|
||||
|
||||
runBenchmarks()
|
||||
Reference in New Issue
Block a user