Skip to content

bun runtime: problem with performance #16

@vanodevium

Description

@vanodevium

test scenario

import {bench, group, run} from "mitata";
import createTree from "functional-red-black-tree";

const iterations = 100_000;

group("Ordered structures", () => {
    bench("baseline", () => {
        const q = [];
        for (let i = iterations; i > 0; i--) {
            q.push(i);
        }
    });
    bench("red-black", () => {
        let tree = createTree(function (a, b) {
            return a - b;
        });
        for (let i = iterations; i > 0; i--) {
            tree = tree.insert(i, i);
        }
    });
});

await run();

Node 20 runtime

cpu: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
runtime: node v20.0.0 (x64-linux)

benchmark      time (avg)             (min … max)       p75       p99      p995
------------------------------------------------- -----------------------------
• Ordered structures
------------------------------------------------- -----------------------------
baseline     1.14 ms/iter   (892.31 µs … 2.54 ms) 982.98 µs   2.28 ms   2.34 ms
red-black   56.57 ms/iter      (54.31 ms … 59 ms)  57.97 ms     59 ms     59 ms

summary for Ordered structures
  baseline
   49.8x faster than red-black

Bun runtime

cpu: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
runtime: bun 0.5.9 (x64-linux)

benchmark      time (avg)             (min … max)       p75       p99      p995
------------------------------------------------- -----------------------------
• Ordered structures
------------------------------------------------- -----------------------------
baseline   520.24 µs/iter   (429.55 µs … 1.53 ms) 510.55 µs   1.21 ms   1.29 ms
red-black   96.43 ms/iter  (85.09 ms … 109.33 ms) 100.35 ms 109.33 ms 109.33 ms

summary for Ordered structures
  baseline
   185.35x faster than red-black

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions