Files
native-monad/benchmarks/result/type-guards.bench.ts
2026-03-30 08:34:35 +02:00

75 lines
2.4 KiB
TypeScript

import { bench, describe } from 'vitest';
import { STANDARD } from '../helpers/bench-options.js';
import {
ok,
err,
ntOk,
ntErr,
TsOk,
TsErr,
OxOk,
OxErr,
E,
TmResult,
} from '../helpers/imports.js';
// ---------------------------------------------------------------------------
// isOk — on Ok variant
// ---------------------------------------------------------------------------
describe('Result.isOk — on Ok', () => {
const nm = ok(42);
const nt = ntOk(42);
const ts = TsOk(42);
const ox = OxOk(42);
const fp = E.right(42);
const tm = TmResult.ok<number, string>(42);
bench('native-monad', () => { nm.isOk(); }, STANDARD);
bench('neverthrow', () => { nt.isOk(); }, STANDARD);
bench('ts-results-es', () => { ts.isOk(); }, STANDARD);
bench('oxide.ts', () => { ox.isOk(); }, STANDARD);
bench('fp-ts', () => { E.isRight(fp); }, STANDARD);
bench('true-myth', () => { tm.isOk; }, STANDARD);
});
// ---------------------------------------------------------------------------
// isOk — on Err variant
// ---------------------------------------------------------------------------
describe('Result.isOk — on Err', () => {
const nm = err('fail');
const nt = ntErr('fail');
const ts = TsErr('fail');
const ox = OxErr('fail');
const fp = E.left('fail');
const tm = TmResult.err<number, string>('fail');
bench('native-monad', () => { nm.isOk(); }, STANDARD);
bench('neverthrow', () => { nt.isOk(); }, STANDARD);
bench('ts-results-es', () => { ts.isOk(); }, STANDARD);
bench('oxide.ts', () => { ox.isOk(); }, STANDARD);
bench('fp-ts', () => { E.isRight(fp); }, STANDARD);
bench('true-myth', () => { tm.isOk; }, STANDARD);
});
// ---------------------------------------------------------------------------
// isErr — on Err variant
// ---------------------------------------------------------------------------
describe('Result.isErr — on Err', () => {
const nm = err('fail');
const nt = ntErr('fail');
const ts = TsErr('fail');
const ox = OxErr('fail');
const fp = E.left('fail');
const tm = TmResult.err<number, string>('fail');
bench('native-monad', () => { nm.isErr(); }, STANDARD);
bench('neverthrow', () => { nt.isErr(); }, STANDARD);
bench('ts-results-es', () => { ts.isErr(); }, STANDARD);
bench('oxide.ts', () => { ox.isErr(); }, STANDARD);
bench('fp-ts', () => { E.isLeft(fp); }, STANDARD);
bench('true-myth', () => { tm.isErr; }, STANDARD);
});