bun performance

Uncompressed bundles

$ time bun cq gnu.bun emacs-20.7 gcc-2.95.2 gdb-5.0
1.66user 18.74system 1:19.88elapsed 25%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (89323major+669minor)pagefaults 0swaps

$ time tar cf gnu.tar emacs-20.7 gcc-2.95.2 gdb-5.0
2.95user 34.86system 1:21.73elapsed 46%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (44769major+25minor)pagefaults 0swaps

$ ls -l gnu.bun gnu.tar
-rw-r--r--    1 tjg      xra      162475069 Dec 15 14:21 gnu.bun
-rw-r--r--    1 tjg      xra      168202240 Dec 15 14:28 gnu.tar

$ time bun xq gnu.bun
3.46user 20.00system 1:09.13elapsed 33%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (69761major+19minor)pagefaults 0swaps

$ time tar xf gnu.tar
4.67user 48.05system 1:13.55elapsed 71%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (41213major+19minor)pagefaults 0swaps

Compressed bundles

$ time bun z gnu.bun emacs-20.7 gcc-2.95.2 gdb-5.0
46.42user 18.86system 1:10.21elapsed 92%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (686961major+478829minor)pagefaults 0swaps

$ time tar cfz gnu.tar.gz emacs-20.7 gcc-2.95.2 gdb-5.0
43.16user 2.25system 0:45.71elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (235major+130minor)pagefaults 0swaps

$ time zip -q -r gnu.zip emacs-20.7 gcc-2.95.2 gdb-5.0
39.59user 1.45system 0:41.61elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (111major+640minor)pagefaults 0swaps

$ ls -l gnu.bun gnu.tar.gz gnu.zip
-rw-r--r--    1 tjg      xra      45960449 Dec 15 15:22 gnu.bun
-rw-r--r--    1 tjg      xra      40496919 Dec 15 16:27 gnu.tar.gz
-rw-r--r--    1 tjg      xra      45912665 Dec 15 16:22 gnu.zip

$ time bun xq gnu.bun
22.98user 62.89system 1:41.98elapsed 84%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (736956major+254702minor)pagefaults 0swaps

$ time unzip -q gnu.zip
20.58user 6.64system 0:32.64elapsed 83%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (106major+38minor)pagefaults 0swaps

$ time tar xfz gnu.tar.gz
20.31user 7.31system 0:32.62elapsed 84%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (233major+70minor)pagefaults 0swaps

Extracting a single file

$ time bun x gnu.bun gcc-2.95.2/README
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (185major+42minor)pagefaults 0swaps

$ time tar xfz gnu.tar.gz gcc-2.95.2/README
5.29user 0.54system 0:05.83elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (233major+69minor)pagefaults 0swaps

$ time unzip -q gnu.zip gcc-2.95.2/README
0.01user 0.01system 0:00.02elapsed 90%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (107major+30minor)pagefaults 0swaps

In practice, you'd probably use bun's o flag to copy the file to standard output.

    bun xo gnu.bun gcc-2.95.2/README | more