ReviewOS

also looking at this

stacks/bun-query-builder

chore(deps): update dependency mitata to v1 - autoclosed

#73
Closed renovate[bot] wants to merge renovate/mitata-1.x into main
2 files +5 -5

This PR contains the following updates:

PackageChangeAgeAdoptionPassingConfidence
mitata^0.1.14 -> ^1.0.34ageadoptionpassingconfidence

Release Notes

evanwashere/mitata (mitata)

v1.0.34

Compare Source

v1.0.33

Compare Source

v1.0.32

Compare Source

v1.0.31

Compare Source

v1.0.30

Compare Source

v1.0.29

Compare Source

v1.0.28

Compare Source

v1.0.27

Compare Source

v1.0.26

Compare Source

v1.0.25

Compare Source

v1.0.24

Compare Source

v1.0.23: mitata december holidays update

Compare Source

docs now feature writing good benchmarks section to help people with improving their micro-benchmarks

🚀 New Features

concurrency benchmarks

mitata now offers quick and transparent way to test concurrency of asynchronous functions

bench('sleep(1000) x $concurrency', function* () {
  yield async () => await sleep(1000);
}).range('concurrency', 1, 1024);

benchmark                   avg (min  max) p75   p99    (min  top 1%)
------------------------------------------- -------------------------------
sleep(1000) x 1                 1.00 s/iter    1.00 s                   
                          (1.00 s  1.00 s)    1.00 s 
sleep(1000) x 8                 1.00 s/iter    1.00 s                    
                          (1.00 s  1.00 s)    1.00 s 
sleep(1000) x 64                1.00 s/iter    1.00 s                   
                          (1.00 s  1.00 s)    1.00 s 
sleep(1000) x 512               1.00 s/iter    1.00 s                   
                          (1.00 s  1.00 s)    1.00 s 
sleep(1000) x 1024              1.00 s/iter    1.00 s                   
                          (1.00 s  1.00 s)    1.00 s 

v1.0.22

Compare Source

v1.0.21

Compare Source

v1.0.20: mitata early december update

Compare Source

🚀 New Features

do_not_optimize

utility function to prevent jit from optimizing out values in benchmarks

import { bench, do_not_optimize } from 'mitata';

bench(function () {
  do_not_optimize(new Array(0));
});

hardware counters

bun add @​mitata/counters

mitata now supports collecting and displaying hardware counters on macos and linux

------------------------------------------- -------------------------------
Date.now()                    27.25 ns/iter  27.75 ns █                    
                      (26.32 ns … 32.33 ns)  30.81 ns █▃▂▁▂▅▂▁▂▂▂▂▁▂▂▁▁▁▁▁▁
                  2.20 ipc (  0.00% stalls)  99.99% L1 data cache
          95.35 cycles  209.98 instructions  25.48% retired LD/ST (  53.50)

computed parameters

benchmarks now can include generated parameters that avoid variables hoisting optimization in loops

bench('a * b', function* () {
  yield {
    [0]() {
      return Math.random();
    },

    [1]() {
      return Math.random();
    },

    bench(a, b) {
      do_not_optimize(a * b);
    },
  };
});
------------------------------------------- -------------------------------
a * b                        611.20 ps/iter 600.10 ps  █                   
                      (559.33 ps … 8.20 ns)   1.43 ns ▂█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
a / b                        913.91 ps/iter 895.26 ps  █                   
                      (844.48 ps … 8.03 ns)   1.87 ns ▁█▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

v1.0.19

Compare Source

v1.0.18

Compare Source

v1.0.17

Compare Source

v1.0.16

Compare Source

v1.0.15

Compare Source

v1.0.14: mitata november update

Compare Source

🛠️ Changes

groups can have names

group(name, () => {
  ...
});

 math
-------------------------------------------
1 + 1                         87.43 ps/iter
                       (51.03 ps  9.83 ns)

charts/visualizations can be nested and combined

summary(() => {
  barplot(() => {
    bench(...);
  });

  barplot(() => { ... });
});

------------------------------------------- -------------------------------
1 + 1                        105.54 ps/iter  91.55 ps                     !
                       (61.04 ps  1.83 µs) 122.07 ps 
Date.now()                    39.61 ns/iter  28.01 ns                     
                       (27.83 ns  3.19 µs) 153.12 ns 

                                                                         
                       1 + 1  105.54 ps
                  Date.now()  39.61 ns
                                                                         

summary
  1 + 1
   375.26x faster than Date.now()

------------------------------------------- -------------------------------
2 + 2                        117.75 ps/iter  91.55 ps                     !
                       (61.04 ps  3.69 µs) 112.06 ps 
3 + 3                        126.97 ps/iter  91.55 ps                     !
                       (61.04 ps  4.23 µs) 122.07 ps 

                                                                         
                       2 + 2  117.75 ps
                       3 + 3  126.97 ps
                                                                         

summary
  2 + 2
   1.08x faster than 3 + 3

other notable changes

  • support for detecting webcontainers
  • benchmark names now have 28 chars of space
  • optimized amount of ansi codes outputted in some charts

🚀 New Features

benchmark names can be highlighted

bench(...).highlight('red');
image

markdown table format

await run({ format: 'markdown' });

clk: ~3.17 GHz cpu: Apple M2 Pro runtime: bun 1.1.26 (arm64-darwin)

benchmarkavgminp75p99max
1 + 1 90.69 ps/iter 61.04 ps 91.55 ps122.07 ps309.74 ns
Date.now() 28.70 ns/iter 26.70 ns 28.01 ns 43.35 ns413.05 ns

option to fine tune garbage collection behavior

// runs gc before each iteration 
bench(...).gc('inner');

v1.0.13

Compare Source

v1.0.12

Compare Source

v1.0.11

Compare Source

v1.0.10

Compare Source

v1.0.9

Compare Source

v1.0.8

Compare Source

v1.0.7

Compare Source

v1.0.6

Compare Source

v1.0.5

Compare Source

v1.0.4

Compare Source

v1.0.3

Compare Source

v1.0.2

Compare Source

v1.0.1

Compare Source

v1.0.0

Compare Source


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

2 changed files on the files tab, with 0 review threads.