initial commit
This commit is contained in:
59
benchmarks/result/construction.bench.ts
Normal file
59
benchmarks/result/construction.bench.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import { bench, describe } from 'vitest';
|
||||
import { STANDARD } from '../helpers/bench-options.js';
|
||||
import {
|
||||
ok,
|
||||
err,
|
||||
ntOk,
|
||||
ntErr,
|
||||
TsOk,
|
||||
TsErr,
|
||||
OxOk,
|
||||
OxErr,
|
||||
E,
|
||||
pipe,
|
||||
TmResult,
|
||||
} from '../helpers/imports.js';
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Ok / Right / success construction
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
describe('Result construction — Ok (primitive)', () => {
|
||||
bench('native-monad', () => { ok(42); }, STANDARD);
|
||||
bench('neverthrow', () => { ntOk(42); }, STANDARD);
|
||||
bench('ts-results-es', () => { TsOk(42); }, STANDARD);
|
||||
bench('oxide.ts', () => { OxOk(42); }, STANDARD);
|
||||
bench('fp-ts', () => { E.right(42); }, STANDARD);
|
||||
bench('true-myth', () => { TmResult.ok(42); }, STANDARD);
|
||||
});
|
||||
|
||||
describe('Result construction — Err (primitive)', () => {
|
||||
bench('native-monad', () => { err('fail'); }, STANDARD);
|
||||
bench('neverthrow', () => { ntErr('fail'); }, STANDARD);
|
||||
bench('ts-results-es', () => { TsErr('fail'); }, STANDARD);
|
||||
bench('oxide.ts', () => { OxErr('fail'); }, STANDARD);
|
||||
bench('fp-ts', () => { E.left('fail'); }, STANDARD);
|
||||
bench('true-myth', () => { TmResult.err('fail'); }, STANDARD);
|
||||
});
|
||||
|
||||
describe('Result construction — Ok (object payload)', () => {
|
||||
const value = { id: 1, name: 'Alice', roles: ['admin', 'user'] };
|
||||
|
||||
bench('native-monad', () => { ok(value); }, STANDARD);
|
||||
bench('neverthrow', () => { ntOk(value); }, STANDARD);
|
||||
bench('ts-results-es', () => { TsOk(value); }, STANDARD);
|
||||
bench('oxide.ts', () => { OxOk(value); }, STANDARD);
|
||||
bench('fp-ts', () => { E.right(value); }, STANDARD);
|
||||
bench('true-myth', () => { TmResult.ok(value); }, STANDARD);
|
||||
});
|
||||
|
||||
describe('Result construction — Err (Error object)', () => {
|
||||
const error = new Error('something went wrong');
|
||||
|
||||
bench('native-monad', () => { err(error); }, STANDARD);
|
||||
bench('neverthrow', () => { ntErr(error); }, STANDARD);
|
||||
bench('ts-results-es', () => { TsErr(error); }, STANDARD);
|
||||
bench('oxide.ts', () => { OxErr(error); }, STANDARD);
|
||||
bench('fp-ts', () => { E.left(error); }, STANDARD);
|
||||
bench('true-myth', () => { TmResult.err(error); }, STANDARD);
|
||||
});
|
||||
Reference in New Issue
Block a user