tinybench icon indicating copy to clipboard operation
tinybench copied to clipboard

Feature: allow to pass `tasks` to `Bench` constructor

Open fisker opened this issue 8 months ago • 3 comments

For simple cases,

Instead of

const bench = new Bench({ name: 'simple benchmark', time: 100 })

bench
  .add('faster task', () => {
    console.log('I am faster')
  })
  .add('slower task', async () => {
    await new Promise(resolve => setTimeout(resolve, 1)) // we wait 1ms :)
    console.log('I am slower')
  })

await bench.run()

Use

const bench = new Bench({ 
  name: 'simple benchmark',
  time: 100,
  tasks: [
    {
       name: 'faster task',
       fn: () => {
         console.log('I am faster')
       }),
    },
    {
       name: 'slower task',
       fn: async () => {
         await new Promise(resolve => setTimeout(resolve, 1)) // we wait 1ms :)
         console.log('I am faster')
       }),
    }
  ]
})

await bench.run()

Maybe we can also support pass functions directly, use the function name as name

const bench = new Bench({ 
  name: 'simple benchmark',
  time: 100,
  tasks: [
    function a(){},
    function b(){},
  ]
})

await bench.run()

fisker avatar Apr 09 '25 00:04 fisker