1
1
// @ts -check
2
2
import gensync from 'gensync'
3
- import { Bench , hrtimeNow } from 'tinybench '
3
+ import { bench , do_not_optimize , run , summary } from 'mitata '
4
4
// eslint-disable-next-line antfu/no-import-dist
5
5
import { quansync } from '../dist/index.mjs'
6
6
7
- const bench = new Bench ( {
8
- name : 'sync benchmark' ,
9
- time : 100 ,
10
- now : hrtimeNow ,
11
- } )
12
-
13
7
const sync = ( ) => 10
14
8
const async = async ( ) => 10
15
9
const addNativeSync = /** @param {number } n */ n => sync ( ) + n
@@ -31,48 +25,53 @@ const gensyncAdd = gensync(/** @param {number} n */ function* (n) {
31
25
return ( yield * gensyncFn ( ) ) + n
32
26
} )
33
27
34
- bench
35
- . add ( 'sync: native fn' , ( ) => {
36
- sync ( )
28
+ summary ( ( ) => {
29
+ bench ( 'sync: native fn' , function * ( ) {
30
+ yield ( ) => do_not_optimize ( sync ( ) )
37
31
} )
38
- . add ( 'sync: quansync fn' , ( ) => {
39
- quansyncFn . sync ( )
32
+ bench ( 'sync: quansync fn' , function * ( ) {
33
+ yield ( ) => do_not_optimize ( quansyncFn . sync ( ) )
40
34
} )
41
- . add ( 'sync: gensync fn ' , ( ) => {
42
- gensyncFn . sync ( )
35
+ bench ( 'sync: gensync fn ' , function * ( ) {
36
+ yield ( ) => do_not_optimize ( gensyncFn . sync ( ) )
43
37
} )
38
+ } )
44
39
45
- . add ( 'sync: native add' , ( ) => {
46
- addNativeSync ( 1 )
40
+ summary ( ( ) => {
41
+ bench ( 'sync: native add' , function * ( ) {
42
+ yield ( ) => do_not_optimize ( addNativeSync ( 1 ) )
47
43
} )
48
- . add ( 'sync: quansync add' , ( ) => {
49
- quansyncAdd . sync ( 1 )
44
+ bench ( 'sync: quansync add' , function * ( ) {
45
+ yield ( ) => do_not_optimize ( quansyncAdd . sync ( 1 ) )
50
46
} )
51
- . add ( 'sync: gensync add' , ( ) => {
52
- gensyncAdd . sync ( 1 )
47
+ bench ( 'sync: gensync add ' , function * ( ) {
48
+ yield ( ) => do_not_optimize ( gensyncAdd . sync ( 1 ) )
53
49
} )
50
+ } )
54
51
55
- // ASYNC
56
- . add ( 'async: native fn' , async ( ) => {
57
- await async ( )
52
+ summary ( ( ) => {
53
+ bench ( 'async: native fn' , function * ( ) {
54
+ yield async ( ) => do_not_optimize ( await async ( ) )
58
55
} )
59
- . add ( 'async: quansync fn' , async ( ) => {
60
- await quansyncFn . async ( )
56
+ bench ( 'async: quansync fn' , function * ( ) {
57
+ yield async ( ) => do_not_optimize ( await quansyncFn . async ( ) )
61
58
} )
62
- . add ( 'async: gensync fn ' , async ( ) => {
63
- await gensyncFn . async ( )
59
+ bench ( 'async: gensync fn ' , function * ( ) {
60
+ yield async ( ) => do_not_optimize ( await gensyncFn . async ( ) )
64
61
} )
62
+ } )
65
63
66
- . add ( 'async: native add' , async ( ) => {
67
- await addNativeAsync ( 1 )
64
+ summary ( ( ) => {
65
+ bench ( 'async: native add' , function * ( ) {
66
+ yield async ( ) => do_not_optimize ( await addNativeAsync ( 1 ) )
68
67
} )
69
- . add ( 'async: quansync add' , async ( ) => {
70
- await quansyncAdd . async ( 1 )
68
+ bench ( 'async: quansync add' , function * ( ) {
69
+ yield async ( ) => do_not_optimize ( await quansyncAdd . async ( 1 ) )
71
70
} )
72
- . add ( 'async: gensync add' , async ( ) => {
73
- await gensyncAdd . async ( 1 )
71
+ bench ( 'async: gensync add ' , function * ( ) {
72
+ yield async ( ) => do_not_optimize ( await gensyncAdd . async ( 1 ) )
74
73
} )
74
+ } )
75
75
76
76
console . info ( 'Running benchmark...' )
77
- await bench . run ( )
78
- console . table ( bench . table ( ) )
77
+ await run ( )
0 commit comments