Skip to content

Commit 96205dd

Browse files
rubennortefacebook-github-bot
authored andcommitted
Add tinybench to run benchmarks in Fantom (facebook#48453)
Summary: Pull Request resolved: facebook#48453 Changelog: [internal] Adds tinybench 3.1.0 (which has support for sync execution) and defined Flow types for the package. Reviewed By: dmytrorykun Differential Revision: D66698545 fbshipit-source-id: faf44add74e5711ac0d50794ce3360eedc45f0a5
1 parent bc3072e commit 96205dd

File tree

3 files changed

+127
-0
lines changed

3 files changed

+127
-0
lines changed

flow-typed/npm/tinybench_v3.1.x.js

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
/**
2+
* Copyright (c) Meta Platforms, Inc. and affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*
7+
* @flow strict
8+
* @format
9+
* @oncall react_native
10+
*/
11+
12+
declare module 'tinybench' {
13+
declare export class Task extends EventTarget {
14+
name: string;
15+
result: void | $ReadOnly<TaskResult>;
16+
runs: number;
17+
18+
reset(): void;
19+
run(): Promise<Task>;
20+
runSync(): Task;
21+
warmup(): Promise<void>;
22+
}
23+
24+
export type Hook = (
25+
task: Task,
26+
mode: 'run' | 'warmup',
27+
) => Promise<void> | void;
28+
29+
export type BenchOptions = {
30+
iterations?: number,
31+
name?: string,
32+
now?: () => number,
33+
setup?: Hook,
34+
signal?: AbortSignal,
35+
teardown?: Hook,
36+
throws?: boolean,
37+
time?: number,
38+
warmup?: boolean,
39+
warmupIterations?: number,
40+
warmupTime?: number,
41+
};
42+
43+
export interface Statistics {
44+
aad: void | number;
45+
critical: number;
46+
df: number;
47+
mad: void | number;
48+
max: number;
49+
mean: number;
50+
min: number;
51+
moe: number;
52+
p50: void | number;
53+
p75: void | number;
54+
p99: void | number;
55+
p995: void | number;
56+
p999: void | number;
57+
rme: number;
58+
samples: number[];
59+
sd: number;
60+
sem: number;
61+
variance: number;
62+
}
63+
64+
export interface TaskResult {
65+
critical: number;
66+
df: number;
67+
error?: Error;
68+
hz: number;
69+
latency: Statistics;
70+
max: number;
71+
mean: number;
72+
min: number;
73+
moe: number;
74+
p75: number;
75+
p99: number;
76+
p995: number;
77+
p999: number;
78+
period: number;
79+
rme: number;
80+
samples: number[];
81+
sd: number;
82+
sem: number;
83+
throughput: Statistics;
84+
totalTime: number;
85+
variance: number;
86+
}
87+
88+
export type FnOptions = {
89+
afterAll?: (this: Task) => void | Promise<void>,
90+
afterEach?: (this: Task) => void | Promise<void>,
91+
beforeAll?: (this: Task) => void | Promise<void>,
92+
beforeEach?: (this: Task) => void | Promise<void>,
93+
};
94+
95+
export type Fn = () => Promise<mixed> | mixed;
96+
97+
declare export class Bench extends EventTarget {
98+
concurrency: null | 'task' | 'bench';
99+
name?: string;
100+
opts: $ReadOnly<BenchOptions>;
101+
threshold: number;
102+
103+
constructor(options?: BenchOptions): this;
104+
105+
// $FlowExpectedError[unsafe-getters-setters]
106+
get results(): Array<$ReadOnly<TaskResult>>;
107+
108+
// $FlowExpectedError[unsafe-getters-setters]
109+
get tasks(): Array<Task>;
110+
111+
add(name: string, fn: Fn, fnOpts?: FnOptions): this;
112+
getTask(name: string): void | Task;
113+
remove(name: string): this;
114+
reset(): void;
115+
run(): Promise<Array<Task>>;
116+
runSync(): Array<Task>;
117+
table(
118+
convert?: (task: Task) => Record<string, void | string | number>,
119+
): void | Array<Record<string, void | string | number>>;
120+
}
121+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
"shelljs": "^0.8.5",
103103
"signedsource": "^1.0.0",
104104
"supports-color": "^7.1.0",
105+
"tinybench": "^3.1.0",
105106
"typescript": "5.0.4",
106107
"ws": "^6.2.3"
107108
},

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8348,6 +8348,11 @@ tiny-invariant@^1.3.3:
83488348
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127"
83498349
integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==
83508350

8351+
tinybench@^3.1.0:
8352+
version "3.1.0"
8353+
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-3.1.0.tgz#ec68451ff05233cf3de12c46f39f06011897109a"
8354+
integrity sha512-Km+oMh2xqNCxuyoUsqbRmHgFSd8sATh7v7xreP+kHN6x67w28Pawr83WmBxcaORvxkc0Ex6zgqK951yBnTFaaQ==
8355+
83518356
tmp@^0.0.33:
83528357
version "0.0.33"
83538358
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"

0 commit comments

Comments
 (0)