Back to skills
extension
Category: Development & EngineeringNo API key required

bench

The benchmark category (e.g., arithmetic, parsing, comparison)

personAuthor: jakexiaohubgithub

Generate Benchmark

Generate a mitata benchmark file for the {{ category }} category.

Project Conventions

This project uses mitata for benchmarking. Follow the patterns in bench/.

Setup Import

Always import the shared setup:

import { run, bench, group, baseline } from "mitata";
import {
  Decimal,
  decimalJs,
  bigJs,
  bignumberJs,
  dineroAmount,
} from "./setup";

Benchmark Structure

// Group related benchmarks
group("{{ category }} - operation name", () => {
  // Always include baseline (usually Decimal or native)
  baseline("Centimal", () => {
    // benchmark code
  });

  // Compare against other libraries
  bench("decimal.js", () => {
    // equivalent operation
  });

  bench("big.js", () => {
    // equivalent operation
  });

  bench("bignumber.js", () => {
    // equivalent operation
  });
});

// Run all benchmarks
await run();

Example Pattern (from arithmetic.bench.ts)

group("addition - small numbers", () => {
  baseline("Centimal", () => {
    Decimal.from("123.45").add(Decimal.from("67.89"));
  });

  bench("decimal.js", () => {
    decimalJs("123.45").plus("67.89");
  });

  bench("big.js", () => {
    bigJs("123.45").plus("67.89");
  });

  bench("bignumber.js", () => {
    bignumberJs("123.45").plus("67.89");
  });
});

Test Data Recommendations

| Category | Test Cases | |----------|------------| | Arithmetic | Small numbers, large numbers, high precision | | Parsing | Integers, decimals, scientific notation, edge cases | | Comparison | Equal, not equal, less than, greater than | | Percentage | Small %, large %, fractional % | | Allocation | 2-way split, 3-way split, uneven ratios |

Output Location

Create: bench/{{ category }}.bench.ts

Your Task

  1. Read existing benchmarks in bench/ to understand patterns
  2. Read bench/setup.ts to understand available test fixtures
  3. Create bench/{{ category }}.bench.ts with comprehensive benchmarks
  4. Ensure the new file is imported in bench/run.ts if needed