diff --git a/bench/index.js b/bench/index.js deleted file mode 100644 index b7a01e69..00000000 --- a/bench/index.js +++ /dev/null @@ -1,32 +0,0 @@ - -import { resolve } from 'path' -import build from '../server/build' -import { render as _render } from '../server/render' -import Benchmark from 'benchmark' - -const dir = resolve(__dirname, 'fixtures', 'basic') -const suite = new Benchmark.Suite('Next.js') - -suite -.on('start', async () => build(dir)) - -.add('Tiny stateless component', async p => { - await render('/stateless') - p.resolve() -}, { defer: true }) - -.add('Big stateless component', async p => { - await render('/stateless-big') - p.resolve() -}, { defer: true }) - -.add('Stateful component with a loooot of css', async p => { - await render('/css') - p.resolve() -}, { defer: true }) - -module.exports = suite - -function render (url, ctx) { - return _render(url, ctx, { dir, staticMarkup: true }) -} diff --git a/bench/package.json b/bench/package.json new file mode 100644 index 00000000..cb942542 --- /dev/null +++ b/bench/package.json @@ -0,0 +1,9 @@ +{ + "name": "next-bench", + "scripts": { + "build": "next build", + "start": "npm run build && next start", + "bench:stateless": "ab -c1 -n3000 http://0.0.0.0:3000/stateless", + "bench:stateless-big": "ab -c1 -n500 http://0.0.0.0:3000/stateless-big" + } +} diff --git a/bench/fixtures/basic/pages/stateless-big.js b/bench/pages/stateless-big.js similarity index 100% rename from bench/fixtures/basic/pages/stateless-big.js rename to bench/pages/stateless-big.js diff --git a/bench/fixtures/basic/pages/stateless.js b/bench/pages/stateless.js similarity index 61% rename from bench/fixtures/basic/pages/stateless.js rename to bench/pages/stateless.js index b6796ba8..256b5e8f 100644 --- a/bench/fixtures/basic/pages/stateless.js +++ b/bench/pages/stateless.js @@ -1,3 +1 @@ -import React from 'react' - export default () =>

My component!

diff --git a/bench/readme.md b/bench/readme.md new file mode 100644 index 00000000..0ac01e4b --- /dev/null +++ b/bench/readme.md @@ -0,0 +1,27 @@ +# Next.js server-side benchmarks + +## Installation + +Follow the steps in [contributing.md](../contributing.md) + +Both benchmarks use `ab`. So make sure you have that installed. + +## Usage + +Before running the test: + +``` +npm run start +``` + +Then run one of these tests: + +- Stateless application which renders `

My component!

`. Runs 3000 http requests. +``` +npm run bench:stateless +``` + +- Stateless application which renders `
  • This is row {i}
  • ` 10.000 times. Runs 500 http requests. +``` +npm run bench:stateless-big +``` diff --git a/flyfile.js b/flyfile.js index e254bd93..5108c001 100644 --- a/flyfile.js +++ b/flyfile.js @@ -44,18 +44,6 @@ export async function build(fly) { await fly.serial(['copy', 'compile']) } -export async function bench(fly) { - await fly.parallel(['compile', 'copy']) - // copy bench fixtures - await fly.source('bench/fixtures/**/*').target('dist/bench/fixtures') - // compile bench - await fly.source('bench/*.js').babel().target('dist/bench') - notify('Compiled bench files') - // yield fly.source('dist/bench/*.js').benchmark({ - // benchmark.reporters.etalon('RegExp#test') - // }) -} - export default async function (fly) { await fly.start('build') await fly.watch('bin/*', 'bin')