Skip to content

Commit 6c74044

Browse files
committed
chore: add individual benchmarks for as/is modules
1 parent 61a040b commit 6c74044

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+3288
-435
lines changed

.scripts/bench.ts

Lines changed: 0 additions & 435 deletions
This file was deleted.

as/optional_bench.ts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import {
2+
asOptional as asOptional420,
3+
asUnoptional as asUnoptional420,
4+
hasOptional as hasOptional420,
5+
} from "jsr:@core/[email protected]/as/optional";
6+
import { asOptional, asUnoptional, hasOptional } from "./optional.ts";
7+
8+
const repeats = Array.from({ length: 100 });
9+
10+
const predicate = (x: unknown): x is string => typeof x === "string";
11+
const optional = asOptional((x: unknown): x is string => typeof x === "string");
12+
13+
Deno.bench({
14+
name: "current",
15+
fn() {
16+
repeats.forEach(() => asOptional(predicate));
17+
},
18+
group: "asOptional (predicate)",
19+
});
20+
21+
Deno.bench({
22+
name: "current",
23+
fn() {
24+
repeats.forEach(() => asOptional(optional));
25+
},
26+
group: "asOptional (optional)",
27+
});
28+
29+
Deno.bench({
30+
name: "current",
31+
fn() {
32+
repeats.forEach(() => asUnoptional(predicate));
33+
},
34+
group: "asUnoptional (predicate)",
35+
});
36+
37+
Deno.bench({
38+
name: "current",
39+
fn() {
40+
repeats.forEach(() => asUnoptional(optional));
41+
},
42+
group: "asUnoptional (optional)",
43+
});
44+
45+
Deno.bench({
46+
name: "current",
47+
fn() {
48+
repeats.forEach(() => hasOptional(predicate));
49+
},
50+
group: "hasOptional (predicate)",
51+
});
52+
53+
Deno.bench({
54+
name: "current",
55+
fn() {
56+
repeats.forEach(() => hasOptional(optional));
57+
},
58+
group: "hasOptional (optional)",
59+
});
60+
61+
Deno.bench({
62+
name: "v4.2.0",
63+
fn() {
64+
repeats.forEach(() => asOptional420(predicate));
65+
},
66+
group: "asOptional (predicate)",
67+
});
68+
69+
Deno.bench({
70+
name: "v4.2.0",
71+
fn() {
72+
repeats.forEach(() => asOptional420(optional));
73+
},
74+
group: "asOptional (optional)",
75+
});
76+
77+
Deno.bench({
78+
name: "v4.2.0",
79+
fn() {
80+
repeats.forEach(() => asUnoptional420(predicate));
81+
},
82+
group: "asUnoptional (predicate)",
83+
});
84+
85+
Deno.bench({
86+
name: "v4.2.0",
87+
fn() {
88+
repeats.forEach(() => asUnoptional420(optional));
89+
},
90+
group: "asUnoptional (optional)",
91+
});
92+
93+
Deno.bench({
94+
name: "v4.2.0",
95+
fn() {
96+
repeats.forEach(() => hasOptional420(predicate));
97+
},
98+
group: "hasOptional (predicate)",
99+
});
100+
101+
Deno.bench({
102+
name: "v4.2.0",
103+
fn() {
104+
repeats.forEach(() => hasOptional420(optional));
105+
},
106+
group: "hasOptional (optional)",
107+
});

as/readonly_bench.ts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import {
2+
asReadonly as asReadonly420,
3+
asUnreadonly as asUnreadonly420,
4+
hasReadonly as hasReadonly420,
5+
} from "jsr:@core/[email protected]/as/readonly";
6+
import { asReadonly, asUnreadonly, hasReadonly } from "./readonly.ts";
7+
8+
const repeats = Array.from({ length: 100 });
9+
10+
const predicate = (x: unknown): x is string => typeof x === "string";
11+
const readonly = asReadonly((x: unknown): x is string => typeof x === "string");
12+
13+
Deno.bench({
14+
name: "current",
15+
fn() {
16+
repeats.forEach(() => asReadonly(predicate));
17+
},
18+
group: "asReadonly (predicate)",
19+
});
20+
21+
Deno.bench({
22+
name: "current",
23+
fn() {
24+
repeats.forEach(() => asReadonly(readonly));
25+
},
26+
group: "asReadonly (readonly)",
27+
});
28+
29+
Deno.bench({
30+
name: "current",
31+
fn() {
32+
repeats.forEach(() => asUnreadonly(predicate));
33+
},
34+
group: "asUnreadonly (predicate)",
35+
});
36+
37+
Deno.bench({
38+
name: "current",
39+
fn() {
40+
repeats.forEach(() => asUnreadonly(readonly));
41+
},
42+
group: "asUnreadonly (readonly)",
43+
});
44+
45+
Deno.bench({
46+
name: "current",
47+
fn() {
48+
repeats.forEach(() => hasReadonly(predicate));
49+
},
50+
group: "hasReadonly (predicate)",
51+
});
52+
53+
Deno.bench({
54+
name: "current",
55+
fn() {
56+
repeats.forEach(() => hasReadonly(readonly));
57+
},
58+
group: "hasReadonly (readonly)",
59+
});
60+
61+
Deno.bench({
62+
name: "v4.2.0",
63+
fn() {
64+
repeats.forEach(() => asReadonly420(predicate));
65+
},
66+
group: "asReadonly (predicate)",
67+
});
68+
69+
Deno.bench({
70+
name: "v4.2.0",
71+
fn() {
72+
repeats.forEach(() => asReadonly420(readonly));
73+
},
74+
group: "asReadonly (readonly)",
75+
});
76+
77+
Deno.bench({
78+
name: "v4.2.0",
79+
fn() {
80+
repeats.forEach(() => asUnreadonly420(predicate));
81+
},
82+
group: "asUnreadonly (predicate)",
83+
});
84+
85+
Deno.bench({
86+
name: "v4.2.0",
87+
fn() {
88+
repeats.forEach(() => asUnreadonly420(readonly));
89+
},
90+
group: "asUnreadonly (readonly)",
91+
});
92+
93+
Deno.bench({
94+
name: "v4.2.0",
95+
fn() {
96+
repeats.forEach(() => hasReadonly420(predicate));
97+
},
98+
group: "hasReadonly (predicate)",
99+
});
100+
101+
Deno.bench({
102+
name: "v4.2.0",
103+
fn() {
104+
repeats.forEach(() => hasReadonly420(readonly));
105+
},
106+
group: "hasReadonly (readonly)",
107+
});

is/any_bench.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { assert } from "@std/assert";
2+
import { isAny as isAny420 } from "jsr:@core/[email protected]/is/any";
3+
import { isAny } from "./any.ts";
4+
5+
const repeats = Array.from({ length: 100 });
6+
const positive: unknown = "";
7+
8+
Deno.bench({
9+
name: "current",
10+
fn() {
11+
assert(repeats.every(() => isAny(positive)));
12+
},
13+
group: "isAny (positive)",
14+
});
15+
16+
Deno.bench({
17+
name: "v4.2.0",
18+
fn() {
19+
assert(repeats.every(() => isAny420(positive)));
20+
},
21+
group: "isAny (positive)",
22+
});

is/array_bench.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { assert } from "@std/assert";
2+
import { isArray as isArray420 } from "jsr:@core/[email protected]/is/array";
3+
import { isArray } from "./array.ts";
4+
5+
const repeats = Array.from({ length: 100 });
6+
const positive: unknown = [];
7+
const negative: unknown = "";
8+
9+
Deno.bench({
10+
name: "current",
11+
fn() {
12+
assert(repeats.every(() => isArray(positive)));
13+
},
14+
group: "isArray (positive)",
15+
});
16+
17+
Deno.bench({
18+
name: "current",
19+
fn() {
20+
assert(repeats.every(() => !isArray(negative)));
21+
},
22+
group: "isArray (negative)",
23+
});
24+
25+
Deno.bench({
26+
name: "v4.2.0",
27+
fn() {
28+
assert(repeats.every(() => isArray420(positive)));
29+
},
30+
group: "isArray (positive)",
31+
});
32+
33+
Deno.bench({
34+
name: "v4.2.0",
35+
fn() {
36+
assert(repeats.every(() => !isArray420(negative)));
37+
},
38+
group: "isArray (negative)",
39+
});

is/array_of_bench.ts

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
import { assert } from "@std/assert";
2+
import { isArrayOf as isArrayOf420 } from "jsr:@core/[email protected]/is/array-of";
3+
import { isArrayOf } from "./array_of.ts";
4+
5+
const repeats = Array.from({ length: 100 });
6+
const positive: unknown = [];
7+
const positive10: unknown = Array.from({ length: 10 }).map(() => "");
8+
const positive1000: unknown = Array.from({ length: 1000 }).map(() => "");
9+
const negative: unknown = "";
10+
const negative10: unknown = Array.from({ length: 10 }).map(() => 0);
11+
const negative1000: unknown = Array.from({ length: 1000 }).map(() => 0);
12+
13+
const pred420 = isArrayOf420((x: unknown): x is string =>
14+
typeof x === "string"
15+
);
16+
const pred = isArrayOf((x: unknown): x is string => typeof x === "string");
17+
18+
Deno.bench({
19+
name: "current",
20+
fn() {
21+
assert(repeats.every(() => pred(positive)));
22+
},
23+
group: "isArrayOf (positive)",
24+
});
25+
26+
Deno.bench({
27+
name: "current",
28+
fn() {
29+
assert(repeats.every(() => pred(positive10)));
30+
},
31+
group: "isArrayOf (positive 10)",
32+
});
33+
34+
Deno.bench({
35+
name: "current",
36+
fn() {
37+
assert(repeats.every(() => pred(positive1000)));
38+
},
39+
group: "isArrayOf (positive 1000)",
40+
});
41+
42+
Deno.bench({
43+
name: "current",
44+
fn() {
45+
assert(repeats.every(() => !pred(negative)));
46+
},
47+
group: "isArrayOf (negative)",
48+
});
49+
50+
Deno.bench({
51+
name: "current",
52+
fn() {
53+
assert(repeats.every(() => !pred(negative10)));
54+
},
55+
group: "isArrayOf (negative 10)",
56+
});
57+
58+
Deno.bench({
59+
name: "current",
60+
fn() {
61+
assert(repeats.every(() => !pred(negative1000)));
62+
},
63+
group: "isArrayOf (negative 1000)",
64+
});
65+
66+
Deno.bench({
67+
name: "v4.2.0",
68+
fn() {
69+
assert(repeats.every(() => pred420(positive)));
70+
},
71+
group: "isArrayOf (positive)",
72+
});
73+
74+
Deno.bench({
75+
name: "v4.2.0",
76+
fn() {
77+
assert(repeats.every(() => pred420(positive10)));
78+
},
79+
group: "isArrayOf (positive 10)",
80+
});
81+
82+
Deno.bench({
83+
name: "v4.2.0",
84+
fn() {
85+
assert(repeats.every(() => pred420(positive1000)));
86+
},
87+
group: "isArrayOf (positive 1000)",
88+
});
89+
90+
Deno.bench({
91+
name: "v4.2.0",
92+
fn() {
93+
assert(repeats.every(() => !pred420(negative)));
94+
},
95+
group: "isArrayOf (negative)",
96+
});
97+
98+
Deno.bench({
99+
name: "v4.2.0",
100+
fn() {
101+
assert(repeats.every(() => !pred420(negative10)));
102+
},
103+
group: "isArrayOf (negative 10)",
104+
});
105+
106+
Deno.bench({
107+
name: "v4.2.0",
108+
fn() {
109+
assert(repeats.every(() => !pred420(negative1000)));
110+
},
111+
group: "isArrayOf (negative 1000)",
112+
});

0 commit comments

Comments
 (0)