initial commit
This commit is contained in:
47
benchmarks/option/construction.bench.ts
Normal file
47
benchmarks/option/construction.bench.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { bench, describe } from 'vitest';
|
||||
import { STANDARD } from '../helpers/bench-options.js';
|
||||
import {
|
||||
some,
|
||||
none,
|
||||
TsSome,
|
||||
TsNone,
|
||||
OxSome,
|
||||
OxNone,
|
||||
O,
|
||||
TmMaybe,
|
||||
} from '../helpers/imports.js';
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Some construction
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
describe('Option construction — Some (primitive)', () => {
|
||||
bench('native-monad', () => { some(42); }, STANDARD);
|
||||
// neverthrow: no Option type
|
||||
bench('ts-results-es', () => { TsSome(42); }, STANDARD);
|
||||
bench('oxide.ts', () => { OxSome(42); }, STANDARD);
|
||||
bench('fp-ts', () => { O.some(42); }, STANDARD);
|
||||
bench('true-myth', () => { TmMaybe.just(42); }, STANDARD);
|
||||
});
|
||||
|
||||
describe('Option construction — Some (object payload)', () => {
|
||||
const value = { id: 1, name: 'Alice', roles: ['admin', 'user'] };
|
||||
|
||||
bench('native-monad', () => { some(value); }, STANDARD);
|
||||
bench('ts-results-es', () => { TsSome(value); }, STANDARD);
|
||||
bench('oxide.ts', () => { OxSome(value); }, STANDARD);
|
||||
bench('fp-ts', () => { O.some(value); }, STANDARD);
|
||||
bench('true-myth', () => { TmMaybe.just(value); }, STANDARD);
|
||||
});
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// None construction / access
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
describe('Option construction — None', () => {
|
||||
bench('native-monad', () => { none(); }, STANDARD);
|
||||
bench('ts-results-es', () => { TsNone; }, STANDARD);
|
||||
bench('oxide.ts', () => { OxNone; }, STANDARD);
|
||||
bench('fp-ts', () => { O.none; }, STANDARD);
|
||||
bench('true-myth', () => { TmMaybe.nothing(); }, STANDARD);
|
||||
});
|
||||
Reference in New Issue
Block a user