Buckets:
| 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() | |
Xet Storage Details
- Size:
- 5.71 kB
- Xet hash:
- 93061b73510de2f9a6ca776e90eeba4382b3d5a5fc6b9c11e097472fc0edb174
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.