Skip to content

Add support for loading mpq archives from buffers#8

Open
alardev wants to merge 9 commits intowowemulation-dev:mainfrom
alardev:main
Open

Add support for loading mpq archives from buffers#8
alardev wants to merge 9 commits intowowemulation-dev:mainfrom
alardev:main

Conversation

@alardev
Copy link

@alardev alardev commented Jul 29, 2025

Summary

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📚 Documentation update
  • 🔧 Refactoring (no functional changes)
  • ⚡ Performance improvement
  • 🧪 Test improvements
  • 🏗️ Build system/dependency changes
  • 🔒 Security fix

Changes Made

Added a method for Archive struct that allows loading archive files from a buffer of Vec<u8>.

Related Issues

Fixes #7
Closes #7
Related to #7

Testing

Test Cases Added/Modified

  • Unit tests
  • Integration tests
  • Compliance tests (StormLib compatibility)
  • Performance benchmarks
  • Manual testing

Test Results

# Example test commands and results
cargo test
cargo test -p wow-mpq
cargo bench

Tested On

  • Linux
  • macOS
  • Windows
  • Cross-compilation targets
  • Wasm32-unknown-unknown

WoW Versions Tested

  • 1.12.1 (Vanilla)
  • 2.4.3 (TBC)
  • 3.3.5a (WotLK)
  • 4.3.4 (Cataclysm)
  • 5.4.8 (MoP)
  • Other: Starcraft Broodwar 1.16.1

Quality Assurance

Code Quality

  • Code follows project style guidelines
  • Self-review of code completed
  • Code is properly documented
  • No obvious performance regressions
  • Error handling is appropriate

Required Checks

  • cargo fmt --all - Code is formatted
  • cargo clippy --all-targets --all-features - No clippy warnings
  • cargo test --all-features - All tests pass
  • cargo test --no-default-features - Tests pass without features
  • cargo deny check - No security/license issues
  • Documentation builds successfully

Compatibility

  • No breaking changes to public API (or properly documented)
  • Backward compatibility maintained where possible
  • StormLib compatibility preserved (if applicable)
  • Cross-platform compatibility verified

Documentation

  • Updated relevant documentation in docs/
  • Updated CHANGELOG.md
  • Updated README.md (if applicable)
  • Added/updated code examples
  • Added/updated CLI help text
  • API documentation updated (rustdoc)

Benchmarks

Performance Impact

  • No performance impact
  • Performance improvement (include metrics)
  • Performance regression (justified and documented)

Benchmark Results

# Before:
test bench_parse_archive ... bench: 1,234 ns/iter (+/- 56)

# After:
Running benches/archive_creation.rs (/home/alar/warcraft-rs/target/release/deps/archive_creation-41b191b66061929a)
Gnuplot not found, using plotters backend
archive_creation/single_file/1KB
                        time:   [85.389 µs 85.871 µs 86.386 µs]
                        thrpt:  [11.305 MiB/s 11.372 MiB/s 11.437 MiB/s]
                 change:
                        time:   [+4.5212% +6.9524% +9.1615%] (p = 0.00 < 0.05)
                        thrpt:  [−8.3926% −6.5005% −4.3257%]
                        Performance has regressed.
Found 6 outliers among 100 measurements (6.00%)
  1 (1.00%) low severe
  1 (1.00%) low mild
  1 (1.00%) high mild
  3 (3.00%) high severe
archive_creation/single_file/64KB
                        time:   [194.91 µs 195.77 µs 196.64 µs]
                        thrpt:  [317.84 MiB/s 319.25 MiB/s 320.66 MiB/s]
                 change:
                        time:   [+19.578% +21.451% +23.252%] (p = 0.00 < 0.05)
                        thrpt:  [−18.865% −17.662% −16.373%]
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low severe
  2 (2.00%) low mild
  1 (1.00%) high severe
Benchmarking archive_creation/single_file/1MB: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 9.5s, enable flat sampling, or reduce sample count to 50.
archive_creation/single_file/1MB
                        time:   [1.9070 ms 1.9178 ms 1.9281 ms]
                        thrpt:  [518.66 MiB/s 521.43 MiB/s 524.39 MiB/s]
                 change:
                        time:   [+37.601% +39.457% +41.153%] (p = 0.00 < 0.05)
                        thrpt:  [−29.155% −28.293% −27.326%]
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) low mild
  1 (1.00%) high mild
  1 (1.00%) high severe
archive_creation/single_file/10MB
                        time:   [27.493 ms 27.688 ms 27.906 ms]
                        thrpt:  [358.35 MiB/s 361.17 MiB/s 363.73 MiB/s]
                 change:
                        time:   [+108.03% +109.74% +111.39%] (p = 0.00 < 0.05)
                        thrpt:  [−52.693% −52.321% −51.929%]
                        Performance has regressed.
Found 11 outliers among 100 measurements (11.00%)
  6 (6.00%) high mild
  5 (5.00%) high severe

archive_creation/multi_file/10_files_100KB
                        time:   [2.0987 ms 2.1099 ms 2.1215 ms]
                        thrpt:  [460.32 MiB/s 462.85 MiB/s 465.31 MiB/s]
                 change:
                        time:   [+41.766% +45.950% +49.499%] (p = 0.00 < 0.05)
                        thrpt:  [−33.110% −31.483% −29.461%]
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
archive_creation/multi_file/100_files_10KB
                        time:   [4.0097 ms 4.0269 ms 4.0444 ms]
                        thrpt:  [241.46 MiB/s 242.51 MiB/s 243.55 MiB/s]
                 change:
                        time:   [+49.639% +50.965% +52.225%] (p = 0.00 < 0.05)
                        thrpt:  [−34.308% −33.759% −33.172%]
                        Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
archive_creation/multi_file/1000_files_1KB
                        time:   [20.944 ms 21.042 ms 21.150 ms]
                        thrpt:  [46.173 MiB/s 46.410 MiB/s 46.627 MiB/s]
                 change:
                        time:   [+58.663% +61.015% +63.272%] (p = 0.00 < 0.05)
                        thrpt:  [−38.753% −37.894% −36.973%]
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) high mild
  2 (2.00%) high severe

archive_creation/compression/none/high_compress
                        time:   [331.66 µs 333.81 µs 336.14 µs]
                        thrpt:  [2.9053 GiB/s 2.9255 GiB/s 2.9445 GiB/s]
                 change:
                        time:   [−6.5187% −4.8703% −3.0259%] (p = 0.00 < 0.05)
                        thrpt:  [+3.1204% +5.1196% +6.9733%]
                        Performance has improved.
Found 7 outliers among 100 measurements (7.00%)
  3 (3.00%) high mild
  4 (4.00%) high severe
Benchmarking archive_creation/compression/none/medium_compress: Collecting 100 samples in estimated 5.1005 s (15k iterationsarchive_creation/compression/none/medium_compress
                        time:   [332.62 µs 335.02 µs 337.66 µs]
                        thrpt:  [2.8922 GiB/s 2.9149 GiB/s 2.9360 GiB/s]
                 change:
                        time:   [−5.1050% −3.6873% −2.0942%] (p = 0.00 < 0.05)
                        thrpt:  [+2.1389% +3.8285% +5.3797%]
                        Performance has improved.
Found 6 outliers among 100 measurements (6.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
  2 (2.00%) high severe
archive_creation/compression/none/low_compress
                        time:   [332.25 µs 334.08 µs 336.05 µs]
                        thrpt:  [2.9060 GiB/s 2.9231 GiB/s 2.9393 GiB/s]
                 change:
                        time:   [−7.1447% −5.1933% −3.4074%] (p = 0.00 < 0.05)
                        thrpt:  [+3.5276% +5.4778% +7.6944%]
                        Performance has improved.
Found 7 outliers among 100 measurements (7.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
  3 (3.00%) high severe
archive_creation/compression/zlib/high_compress
                        time:   [3.1439 ms 3.1621 ms 3.1802 ms]
                        thrpt:  [314.45 MiB/s 316.25 MiB/s 318.07 MiB/s]
                 change:
                        time:   [+62.922% +65.014% +67.006%] (p = 0.00 < 0.05)
                        thrpt:  [−40.122% −39.399% −38.621%]
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) low mild
  1 (1.00%) high mild
Benchmarking archive_creation/compression/zlib/medium_compress: Collecting 100 samples in estimated 5.0461 s (1500 iterationarchive_creation/compression/zlib/medium_compress
                        time:   [3.2813 ms 3.3040 ms 3.3266 ms]
                        thrpt:  [300.61 MiB/s 302.66 MiB/s 304.75 MiB/s]
                 change:
                        time:   [+58.472% +60.305% +62.174%] (p = 0.00 < 0.05)
                        thrpt:  [−38.338% −37.619% −36.897%]
                        Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild
archive_creation/compression/zlib/low_compress
                        time:   [14.346 ms 14.411 ms 14.477 ms]
                        thrpt:  [69.073 MiB/s 69.391 MiB/s 69.707 MiB/s]
                 change:
                        time:   [+33.558% +34.962% +36.276%] (p = 0.00 < 0.05)
                        thrpt:  [−26.619% −25.905% −25.126%]
                        Performance has regressed.
Found 5 outliers among 100 measurements (5.00%)
  1 (1.00%) low mild
  4 (4.00%) high mild
archive_creation/compression/bzip2/high_compress
                        time:   [8.9660 ms 9.0266 ms 9.0926 ms]
                        thrpt:  [109.98 MiB/s 110.78 MiB/s 111.53 MiB/s]
Found 8 outliers among 100 measurements (8.00%)
  6 (6.00%) high mild
  2 (2.00%) high severe
Benchmarking archive_creation/compression/bzip2/medium_compress: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 10.4s, or reduce sample count to 40.
Benchmarking archive_creation/compression/bzip2/medium_compress: Collecting 100 samples in estimated 10.352 s (100 iterationarchive_creation/compression/bzip2/medium_compress
                        time:   [103.35 ms 103.81 ms 104.35 ms]
                        thrpt:  [9.5829 MiB/s 9.6331 MiB/s 9.6759 MiB/s]
Found 8 outliers among 100 measurements (8.00%)
  4 (4.00%) high mild
  4 (4.00%) high severe
Benchmarking archive_creation/compression/bzip2/low_compress: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 12.4s, or reduce sample count to 40.
archive_creation/compression/bzip2/low_compress
                        time:   [124.05 ms 124.40 ms 124.81 ms]
                        thrpt:  [8.0125 MiB/s 8.0386 MiB/s 8.0616 MiB/s]
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) high mild
  2 (2.00%) high severe
archive_creation/compression/lzma/high_compress
                        time:   [17.859 ms 17.971 ms 18.097 ms]
                        thrpt:  [55.256 MiB/s 55.646 MiB/s 55.995 MiB/s]
Found 7 outliers among 100 measurements (7.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
  3 (3.00%) high severe
Benchmarking archive_creation/compression/lzma/medium_compress: Collecting 100 samples in estimated 6.8612 s (300 iterationsarchive_creation/compression/lzma/medium_compress
                        time:   [22.558 ms 22.633 ms 22.712 ms]
                        thrpt:  [44.030 MiB/s 44.183 MiB/s 44.330 MiB/s]
Found 4 outliers among 100 measurements (4.00%)
  4 (4.00%) high mild
archive_creation/compression/lzma/low_compress
                        time:   [46.559 ms 46.834 ms 47.143 ms]
                        thrpt:  [21.212 MiB/s 21.352 MiB/s 21.478 MiB/s]
Found 11 outliers among 100 measurements (11.00%)
  6 (6.00%) high mild
  5 (5.00%) high severe

Benchmarking archive_creation/versions/v1: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 8.4s, enable flat sampling, or reduce sample count to 50.
archive_creation/versions/v1
                        time:   [1.6416 ms 1.6497 ms 1.6581 ms]
                        thrpt:  [301.54 MiB/s 303.09 MiB/s 304.59 MiB/s]
Found 5 outliers among 100 measurements (5.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
  1 (1.00%) high severe
Benchmarking archive_creation/versions/v2: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 8.3s, enable flat sampling, or reduce sample count to 50.
archive_creation/versions/v2
                        time:   [1.6494 ms 1.6563 ms 1.6633 ms]
                        thrpt:  [300.60 MiB/s 301.88 MiB/s 303.14 MiB/s]
Found 8 outliers among 100 measurements (8.00%)
  3 (3.00%) low severe
  2 (2.00%) low mild
  3 (3.00%) high severe
Benchmarking archive_creation/versions/v3_het_bet: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 8.2s, enable flat sampling, or reduce sample count to 50.
archive_creation/versions/v3_het_bet
                        time:   [1.5741 ms 1.5816 ms 1.5896 ms]
                        thrpt:  [314.55 MiB/s 316.13 MiB/s 317.64 MiB/s]
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) low severe
  4 (4.00%) low mild
  1 (1.00%) high mild
  2 (2.00%) high severe
Benchmarking archive_creation/versions/v4_het_bet: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 8.0s, enable flat sampling, or reduce sample count to 50.
archive_creation/versions/v4_het_bet
                        time:   [1.5772 ms 1.5836 ms 1.5903 ms]
                        thrpt:  [314.40 MiB/s 315.73 MiB/s 317.03 MiB/s]
Found 10 outliers among 100 measurements (10.00%)
  1 (1.00%) low severe
  4 (4.00%) low mild
  3 (3.00%) high mild
  2 (2.00%) high severe

archive_creation/encrypted/no_encryption
                        time:   [823.79 µs 826.31 µs 828.92 µs]
                        thrpt:  [301.60 MiB/s 302.55 MiB/s 303.48 MiB/s]
Found 13 outliers among 100 measurements (13.00%)
  5 (5.00%) low severe
  3 (3.00%) low mild
  3 (3.00%) high mild
  2 (2.00%) high severe
archive_creation/encrypted/with_encryption
                        time:   [825.56 µs 828.34 µs 831.42 µs]
                        thrpt:  [300.69 MiB/s 301.81 MiB/s 302.82 MiB/s]
Found 10 outliers among 100 measurements (10.00%)
  2 (2.00%) low mild
  5 (5.00%) high mild
  3 (3.00%) high severe

archive_creation/block_sizes/4KB
                        time:   [25.190 ms 25.287 ms 25.386 ms]
                        thrpt:  [157.56 MiB/s 158.19 MiB/s 158.79 MiB/s]
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
archive_creation/block_sizes/16KB
                        time:   [12.220 ms 12.271 ms 12.323 ms]
                        thrpt:  [324.59 MiB/s 325.98 MiB/s 327.33 MiB/s]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
archive_creation/block_sizes/64KB
                        time:   [8.5366 ms 8.5700 ms 8.6055 ms]
                        thrpt:  [464.82 MiB/s 466.74 MiB/s 468.57 MiB/s]
Found 4 outliers among 100 measurements (4.00%)
  4 (4.00%) high mild
archive_creation/block_sizes/256KB
                        time:   [7.7809 ms 7.8257 ms 7.8720 ms]
                        thrpt:  [508.13 MiB/s 511.14 MiB/s 514.08 MiB/s]
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe
archive_creation/block_sizes/1MB
                        time:   [7.4149 ms 7.4598 ms 7.5062 ms]
                        thrpt:  [532.89 MiB/s 536.21 MiB/s 539.46 MiB/s]
Found 4 outliers among 100 measurements (4.00%)
  4 (4.00%) high mild

     Running benches/archive_extraction.rs (/home/alar/warcraft-rs/target/release/deps/archive_extraction-569da06e10fb8361)
Gnuplot not found, using plotters backend
archive_extraction/single_file/1KB
                        time:   [10.142 µs 10.209 µs 10.292 µs]
                        thrpt:  [94.887 MiB/s 95.658 MiB/s 96.288 MiB/s]
Found 12 outliers among 100 measurements (12.00%)
  7 (7.00%) high mild
  5 (5.00%) high severe
archive_extraction/single_file/64KB
                        time:   [13.358 µs 13.471 µs 13.598 µs]
                        thrpt:  [4.4885 GiB/s 4.5308 GiB/s 4.5692 GiB/s]
Found 11 outliers among 100 measurements (11.00%)
  8 (8.00%) high mild
  3 (3.00%) high severe
archive_extraction/single_file/1MB
                        time:   [61.218 µs 61.648 µs 62.123 µs]
                        thrpt:  [15.720 GiB/s 15.841 GiB/s 15.952 GiB/s]
Found 7 outliers among 100 measurements (7.00%)
  4 (4.00%) high mild
  3 (3.00%) high severe
archive_extraction/single_file/10MB
                        time:   [576.01 µs 581.69 µs 588.37 µs]
                        thrpt:  [16.598 GiB/s 16.788 GiB/s 16.954 GiB/s]
Found 10 outliers among 100 measurements (10.00%)
  1 (1.00%) high mild
  9 (9.00%) high severe

archive_extraction/compressed/none
                        time:   [60.718 µs 61.085 µs 61.521 µs]
                        thrpt:  [15.874 GiB/s 15.987 GiB/s 16.084 GiB/s]
Found 14 outliers among 100 measurements (14.00%)
  1 (1.00%) low mild
  8 (8.00%) high mild
  5 (5.00%) high severe
archive_extraction/compressed/zlib
                        time:   [315.77 µs 317.68 µs 319.50 µs]
                        thrpt:  [3.0565 GiB/s 3.0740 GiB/s 3.0926 GiB/s]
Found 14 outliers among 100 measurements (14.00%)
  7 (7.00%) low mild
  5 (5.00%) high mild
  2 (2.00%) high severe
archive_extraction/compressed/bzip2
                        time:   [2.8805 ms 2.8916 ms 2.9040 ms]
                        thrpt:  [344.35 MiB/s 345.83 MiB/s 347.16 MiB/s]
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe
archive_extraction/compressed/lzma
                        time:   [19.928 ms 20.189 ms 20.519 ms]
                        thrpt:  [48.735 MiB/s 49.531 MiB/s 50.180 MiB/s]
Found 11 outliers among 100 measurements (11.00%)
  2 (2.00%) high mild
  9 (9.00%) high severe

archive_extraction/listing/10_files
                        time:   [12.619 µs 12.687 µs 12.764 µs]
Found 10 outliers among 100 measurements (10.00%)
  4 (4.00%) high mild
  6 (6.00%) high severe
archive_extraction/listing/100_files
                        time:   [28.300 µs 28.483 µs 28.696 µs]
Found 12 outliers among 100 measurements (12.00%)
  4 (4.00%) high mild
  8 (8.00%) high severe
archive_extraction/listing/1000_files
                        time:   [172.94 µs 174.57 µs 176.37 µs]
Found 16 outliers among 100 measurements (16.00%)
  6 (6.00%) low mild
  5 (5.00%) high mild
  5 (5.00%) high severe
Benchmarking archive_extraction/listing/10000_files: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 9.3s, enable flat sampling, or reduce sample count to 50.
archive_extraction/listing/10000_files
                        time:   [1.8377 ms 1.8427 ms 1.8482 ms]
Found 13 outliers among 100 measurements (13.00%)
  4 (4.00%) low severe
  1 (1.00%) low mild
  3 (3.00%) high mild
  5 (5.00%) high severe

Benchmarking archive_extraction/random_access/sequential: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 5.0s, enable flat sampling, or reduce sample count to 70.
archive_extraction/random_access/sequential
                        time:   [980.94 µs 987.85 µs 995.75 µs]
                        thrpt:  [100.43 Kelem/s 101.23 Kelem/s 101.94 Kelem/s]
Found 17 outliers among 100 measurements (17.00%)
  6 (6.00%) low mild
  5 (5.00%) high mild
  6 (6.00%) high severe
Benchmarking archive_extraction/random_access/random: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 5.0s, enable flat sampling, or reduce sample count to 70.
archive_extraction/random_access/random
                        time:   [984.99 µs 994.10 µs 1.0053 ms]
                        thrpt:  [99.473 Kelem/s 100.59 Kelem/s 101.52 Kelem/s]
Found 18 outliers among 100 measurements (18.00%)
  7 (7.00%) low mild
  3 (3.00%) high mild
  8 (8.00%) high severe

archive_extraction/versions/v1
                        time:   [247.43 µs 248.52 µs 249.61 µs]
                        thrpt:  [1.9562 GiB/s 1.9648 GiB/s 1.9734 GiB/s]
Found 15 outliers among 100 measurements (15.00%)
  8 (8.00%) low mild
  6 (6.00%) high mild
  1 (1.00%) high severe
archive_extraction/versions/v2
                        time:   [248.74 µs 250.10 µs 251.80 µs]
                        thrpt:  [1.9391 GiB/s 1.9524 GiB/s 1.9630 GiB/s]
Found 13 outliers among 100 measurements (13.00%)
  6 (6.00%) low mild
  2 (2.00%) high mild
  5 (5.00%) high severe
archive_extraction/versions/v3_het_bet
                        time:   [250.12 µs 252.24 µs 254.69 µs]
                        thrpt:  [1.9172 GiB/s 1.9358 GiB/s 1.9522 GiB/s]
Found 14 outliers among 100 measurements (14.00%)
  6 (6.00%) low mild
  2 (2.00%) high mild
  6 (6.00%) high severe
archive_extraction/versions/v4_het_bet
                        time:   [253.25 µs 254.77 µs 256.52 µs]
                        thrpt:  [1.9035 GiB/s 1.9166 GiB/s 1.9281 GiB/s]
Found 19 outliers among 100 measurements (19.00%)
  9 (9.00%) low mild
  7 (7.00%) high mild
  3 (3.00%) high severe

archive_extraction/parallel/single_thread
                        time:   [2.5791 ms 2.5906 ms 2.6026 ms]
                        thrpt:  [1.8321 GiB/s 1.8406 GiB/s 1.8488 GiB/s]
Found 11 outliers among 100 measurements (11.00%)
  3 (3.00%) low mild
  7 (7.00%) high mild
  1 (1.00%) high severe
archive_extraction/parallel/multi_handle
                        time:   [2.6160 ms 2.6275 ms 2.6398 ms]
                        thrpt:  [1.8063 GiB/s 1.8148 GiB/s 1.8227 GiB/s]
Found 10 outliers among 100 measurements (10.00%)
  3 (3.00%) low mild
  4 (4.00%) high mild
  3 (3.00%) high severe

archive_extraction/metadata/file_exists
                        time:   [19.095 µs 19.211 µs 19.344 µs]
Found 10 outliers among 100 measurements (10.00%)
  3 (3.00%) high mild
  7 (7.00%) high severe
archive_extraction/metadata/file_info
                        time:   [19.117 µs 19.290 µs 19.503 µs]
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) high mild
  7 (7.00%) high severe

     Running benches/builder.rs (/home/alar/warcraft-rs/target/release/deps/builder-d430c1145b04219b)
Gnuplot not found, using plotters backend
encrypt_data/64B        time:   [59.866 ns 60.402 ns 61.016 ns]
Found 13 outliers among 100 measurements (13.00%)
  3 (3.00%) high mild
  10 (10.00%) high severe
encrypt_data/512B       time:   [331.78 ns 334.14 ns 336.70 ns]
Found 9 outliers among 100 measurements (9.00%)
  5 (5.00%) high mild
  4 (4.00%) high severe
encrypt_data/4KB        time:   [2.8080 µs 2.8341 µs 2.8701 µs]
Found 14 outliers among 100 measurements (14.00%)
  6 (6.00%) high mild
  8 (8.00%) high severe
encrypt_data/64KB       time:   [42.713 µs 42.972 µs 43.269 µs]
Found 8 outliers among 100 measurements (8.00%)
  3 (3.00%) high mild
  5 (5.00%) high severe
encrypt_data/1MB        time:   [720.46 µs 723.24 µs 726.12 µs]
Found 14 outliers among 100 measurements (14.00%)
  6 (6.00%) low mild
  6 (6.00%) high mild
  2 (2.00%) high severe
encrypt_data/16MB       time:   [32.367 ms 32.610 ms 32.899 ms]
Found 9 outliers among 100 measurements (9.00%)
  5 (5.00%) high mild
  4 (4.00%) high severe

encrypt_data_patterns/zeros
                        time:   [42.310 µs 42.619 µs 42.968 µs]
Found 11 outliers among 100 measurements (11.00%)
  7 (7.00%) high mild
  4 (4.00%) high severe
encrypt_data_patterns/ones
                        time:   [42.144 µs 42.361 µs 42.605 µs]
Found 10 outliers among 100 measurements (10.00%)
  5 (5.00%) high mild
  5 (5.00%) high severe
encrypt_data_patterns/random
                        time:   [41.924 µs 42.156 µs 42.410 µs]
Found 10 outliers among 100 measurements (10.00%)
  7 (7.00%) high mild
  3 (3.00%) high severe
encrypt_data_patterns/text
                        time:   [41.881 µs 42.089 µs 42.327 µs]
Found 8 outliers among 100 measurements (8.00%)
  4 (4.00%) high mild
  4 (4.00%) high severe

encrypt_data_alignment/aligned_4KB
                        time:   [2.6226 µs 2.6363 µs 2.6522 µs]
Found 10 outliers among 100 measurements (10.00%)
  6 (6.00%) high mild
  4 (4.00%) high severe
encrypt_data_alignment/unaligned_4KB-1
                        time:   [2.6325 µs 2.6500 µs 2.6707 µs]
Found 14 outliers among 100 measurements (14.00%)
  8 (8.00%) high mild
  6 (6.00%) high severe
encrypt_data_alignment/unaligned_4KB+1
                        time:   [2.6342 µs 2.6507 µs 2.6700 µs]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe
encrypt_data_alignment/unaligned_4KB+2
                        time:   [2.6469 µs 2.6683 µs 2.6940 µs]
Found 11 outliers among 100 measurements (11.00%)
  2 (2.00%) high mild
  9 (9.00%) high severe
encrypt_data_alignment/unaligned_4KB+3
                        time:   [2.6361 µs 2.6582 µs 2.6895 µs]
Found 15 outliers among 100 measurements (15.00%)
  5 (5.00%) high mild
  10 (10.00%) high severe

     Running benches/compression.rs (/home/alar/warcraft-rs/target/release/deps/compression-3807e32af9d49ce3)
Gnuplot not found, using plotters backend
zlib_compression/text/1024B
                        time:   [17.380 µs 17.447 µs 17.517 µs]
Found 14 outliers among 100 measurements (14.00%)
  9 (9.00%) low mild
  1 (1.00%) high mild
  4 (4.00%) high severe
zlib_compression/text/4096B
                        time:   [22.623 µs 22.781 µs 22.941 µs]
Found 14 outliers among 100 measurements (14.00%)
  8 (8.00%) low mild
  3 (3.00%) high mild
  3 (3.00%) high severe
zlib_compression/text/16384B
                        time:   [42.895 µs 43.239 µs 43.648 µs]
Found 13 outliers among 100 measurements (13.00%)
  7 (7.00%) low mild
  3 (3.00%) high mild
  3 (3.00%) high severe
zlib_compression/text/65536B
                        time:   [117.37 µs 118.30 µs 119.34 µs]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe
zlib_compression/binary/1024B
                        time:   [16.990 µs 17.085 µs 17.178 µs]
Found 12 outliers among 100 measurements (12.00%)
  7 (7.00%) low mild
  3 (3.00%) high mild
  2 (2.00%) high severe
zlib_compression/binary/4096B
                        time:   [21.511 µs 21.689 µs 21.889 µs]
Found 6 outliers among 100 measurements (6.00%)
  4 (4.00%) high mild
  2 (2.00%) high severe
zlib_compression/binary/16384B
                        time:   [40.255 µs 40.584 µs 40.977 µs]
Found 9 outliers among 100 measurements (9.00%)
  4 (4.00%) high mild
  5 (5.00%) high severe
zlib_compression/binary/65536B
                        time:   [112.61 µs 113.67 µs 114.90 µs]
Found 10 outliers among 100 measurements (10.00%)
  6 (6.00%) high mild
  4 (4.00%) high severe
zlib_compression/zeros/1024B
                        time:   [16.056 µs 16.155 µs 16.257 µs]
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe
zlib_compression/zeros/4096B
                        time:   [20.811 µs 20.969 µs 21.149 µs]
Found 6 outliers among 100 measurements (6.00%)
  4 (4.00%) high mild
  2 (2.00%) high severe
zlib_compression/zeros/16384B
                        time:   [39.705 µs 40.063 µs 40.496 µs]
Found 8 outliers among 100 measurements (8.00%)
  2 (2.00%) high mild
  6 (6.00%) high severe
zlib_compression/zeros/65536B
                        time:   [111.94 µs 112.46 µs 113.04 µs]
Found 6 outliers among 100 measurements (6.00%)
  4 (4.00%) high mild
  2 (2.00%) high severe

zlib_decompression/1024B
                        time:   [880.30 ns 890.31 ns 900.90 ns]
Found 6 outliers among 100 measurements (6.00%)
  2 (2.00%) high mild
  4 (4.00%) high severe
zlib_decompression/4096B
                        time:   [921.45 ns 932.90 ns 944.71 ns]
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild
zlib_decompression/16384B
                        time:   [965.51 ns 976.59 ns 989.04 ns]
Found 7 outliers among 100 measurements (7.00%)
  3 (3.00%) high mild
  4 (4.00%) high severe
zlib_decompression/65536B
                        time:   [966.79 ns 981.88 ns 999.69 ns]
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe

bzip2_compression/1024B time:   [135.81 µs 136.84 µs 137.91 µs]
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
  2 (2.00%) high severe
bzip2_compression/4096B time:   [276.24 µs 278.20 µs 280.67 µs]
Found 8 outliers among 100 measurements (8.00%)
  5 (5.00%) high mild
  3 (3.00%) high severe
Benchmarking bzip2_compression/16384B: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 8.0s, enable flat sampling, or reduce sample count to 50.
bzip2_compression/16384B
                        time:   [1.5701 ms 1.5772 ms 1.5848 ms]
Found 8 outliers among 100 measurements (8.00%)
  5 (5.00%) low mild
  1 (1.00%) high mild
  2 (2.00%) high severe
bzip2_compression/65536B
                        time:   [6.0705 ms 6.1006 ms 6.1341 ms]
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) low mild
  6 (6.00%) high mild
  1 (1.00%) high severe

sparse_decompression/small
                        time:   [19.747 ns 19.920 ns 20.123 ns]
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) high mild
  8 (8.00%) high severe
sparse_decompression/medium
                        time:   [19.778 ns 19.884 ns 20.014 ns]
Found 14 outliers among 100 measurements (14.00%)
  4 (4.00%) high mild
  10 (10.00%) high severe

compression_comparison/zlib
                        time:   [40.956 µs 41.349 µs 41.803 µs]
Found 8 outliers among 100 measurements (8.00%)
  4 (4.00%) high mild
  4 (4.00%) high severe
Benchmarking compression_comparison/bzip2: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 7.9s, enable flat sampling, or reduce sample count to 50.
compression_comparison/bzip2
                        time:   [1.5685 ms 1.5765 ms 1.5850 ms]
Found 9 outliers among 100 measurements (9.00%)
  4 (4.00%) low mild
  2 (2.00%) high mild
  3 (3.00%) high severe
compression_comparison/none
                        time:   [499.33 ns 506.39 ns 513.94 ns]
Found 6 outliers among 100 measurements (6.00%)
  6 (6.00%) high mild

zlib_round_trip         time:   [22.301 µs 22.430 µs 22.575 µs]
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe

     Running benches/crypto.rs (/home/alar/warcraft-rs/target/release/deps/crypto-914c917594a0288d)
Gnuplot not found, using plotters backend
encryption_table_access time:   [247.82 ps 249.17 ps 250.67 ps]
Found 6 outliers among 100 measurements (6.00%)
  5 (5.00%) high mild
  1 (1.00%) high severe

encrypt_block_4kb       time:   [1.4933 µs 1.5039 µs 1.5169 µs]
Found 8 outliers among 100 measurements (8.00%)
  8 (8.00%) high severe

decrypt_block_4kb       time:   [1.5133 µs 1.5214 µs 1.5313 µs]
Found 9 outliers among 100 measurements (9.00%)
  5 (5.00%) high mild
  4 (4.00%) high severe

decrypt_dword           time:   [1.2351 ns 1.2441 ns 1.2544 ns]
Found 8 outliers among 100 measurements (8.00%)
  5 (5.00%) high mild
  3 (3.00%) high severe

encrypt_decrypt_round_trip_4kb
                        time:   [2.8318 µs 2.8416 µs 2.8529 µs]
Found 5 outliers among 100 measurements (5.00%)
  2 (2.00%) high mild
  3 (3.00%) high severe

     Running benches/hash.rs (/home/alar/warcraft-rs/target/release/deps/hash-cf3657be3b970fa8)
Gnuplot not found, using plotters backend
hash_string_short       time:   [10.312 ns 10.363 ns 10.424 ns]
Found 11 outliers among 100 measurements (11.00%)
  6 (6.00%) high mild
  5 (5.00%) high severe

hash_string_medium      time:   [38.610 ns 38.841 ns 39.124 ns]
Found 9 outliers among 100 measurements (9.00%)
  4 (4.00%) high mild
  5 (5.00%) high severe

hash_string_long        time:   [108.26 ns 108.96 ns 109.80 ns]
Found 12 outliers among 100 measurements (12.00%)
  2 (2.00%) high mild
  10 (10.00%) high severe

hash_all_types          time:   [44.463 ns 44.737 ns 45.105 ns]
Found 8 outliers among 100 measurements (8.00%)
  3 (3.00%) high mild
  5 (5.00%) high severe

jenkins_hash_short      time:   [7.0700 ns 7.1083 ns 7.1491 ns]
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) high mild
  2 (2.00%) high severe

jenkins_hash_long       time:   [96.598 ns 96.953 ns 97.356 ns]
Found 7 outliers among 100 measurements (7.00%)
  2 (2.00%) high mild
  5 (5.00%) high severe

hash_with_path_conversion
                        time:   [52.662 ns 53.107 ns 53.641 ns]
Found 8 outliers among 100 measurements (8.00%)
  8 (8.00%) high severe

hash_case_conversion    time:   [28.670 ns 28.811 ns 28.982 ns]
Found 8 outliers among 100 measurements (8.00%)
  4 (4.00%) high mild
  4 (4.00%) high severe

het_hash_48bit          time:   [22.950 ns 23.080 ns 23.234 ns]
Found 10 outliers among 100 measurements (10.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
  6 (6.00%) high severe

het_hash_64bit          time:   [28.020 ns 28.175 ns 28.346 ns]
Found 14 outliers among 100 measurements (14.00%)
  9 (9.00%) high mild
  5 (5.00%) high severe

het_hash_8bit           time:   [23.213 ns 23.354 ns 23.554 ns]
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe

     Running benches/parallel_processing.rs (/home/alar/warcraft-rs/target/release/deps/parallel_processing-bd3cf5577bbe74b2)
Gnuplot not found, using plotters backend
parallel/multi_archive_extraction/sequential/2
                        time:   [32.253 µs 32.390 µs 32.553 µs]
                        thrpt:  [61.438 Kelem/s 61.747 Kelem/s 62.010 Kelem/s]
Found 5 outliers among 100 measurements (5.00%)
  4 (4.00%) high mild
  1 (1.00%) high severe
parallel/multi_archive_extraction/parallel/2
                        time:   [46.065 µs 46.247 µs 46.467 µs]
                        thrpt:  [43.041 Kelem/s 43.246 Kelem/s 43.417 Kelem/s]
Found 12 outliers among 100 measurements (12.00%)
  3 (3.00%) low mild
  2 (2.00%) high mild
  7 (7.00%) high severe
parallel/multi_archive_extraction/sequential/4
                        time:   [67.040 µs 67.341 µs 67.677 µs]
                        thrpt:  [59.104 Kelem/s 59.399 Kelem/s 59.666 Kelem/s]
Found 5 outliers among 100 measurements (5.00%)
  1 (1.00%) high mild
  4 (4.00%) high severe
parallel/multi_archive_extraction/parallel/4
                        time:   [84.003 µs 84.428 µs 84.963 µs]
                        thrpt:  [47.079 Kelem/s 47.378 Kelem/s 47.617 Kelem/s]
Found 24 outliers among 100 measurements (24.00%)
  1 (1.00%) low severe
  7 (7.00%) low mild
  2 (2.00%) high mild
  14 (14.00%) high severe
parallel/multi_archive_extraction/sequential/8
                        time:   [135.77 µs 136.42 µs 137.19 µs]
                        thrpt:  [58.314 Kelem/s 58.642 Kelem/s 58.925 Kelem/s]
Found 9 outliers among 100 measurements (9.00%)
  5 (5.00%) high mild
  4 (4.00%) high severe
parallel/multi_archive_extraction/parallel/8
                        time:   [107.80 µs 108.34 µs 108.95 µs]
                        thrpt:  [73.428 Kelem/s 73.843 Kelem/s 74.213 Kelem/s]
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) low mild
  5 (5.00%) high mild
  3 (3.00%) high severe
parallel/multi_archive_extraction/sequential/16
                        time:   [280.40 µs 282.04 µs 283.91 µs]
                        thrpt:  [56.356 Kelem/s 56.729 Kelem/s 57.061 Kelem/s]
Found 23 outliers among 100 measurements (23.00%)
  5 (5.00%) low severe
  6 (6.00%) low mild
  7 (7.00%) high mild
  5 (5.00%) high severe
parallel/multi_archive_extraction/parallel/16
                        time:   [64.711 µs 65.469 µs 66.347 µs]
                        thrpt:  [241.16 Kelem/s 244.39 Kelem/s 247.25 Kelem/s]
Found 16 outliers among 100 measurements (16.00%)
  3 (3.00%) high mild
  13 (13.00%) high severe

parallel/multi_archive_search/sequential
                        time:   [204.31 µs 205.06 µs 205.83 µs]
                        thrpt:  [38.867 Kelem/s 39.013 Kelem/s 39.156 Kelem/s]
Found 11 outliers among 100 measurements (11.00%)
  5 (5.00%) low mild
  2 (2.00%) high mild
  4 (4.00%) high severe
parallel/multi_archive_search/parallel
                        time:   [129.95 µs 130.72 µs 131.60 µs]
                        thrpt:  [60.791 Kelem/s 61.199 Kelem/s 61.560 Kelem/s]
Found 18 outliers among 100 measurements (18.00%)
  3 (3.00%) low mild
  5 (5.00%) high mild
  10 (10.00%) high severe

parallel/multi_file_multi_archive/sequential
                        time:   [167.25 µs 168.25 µs 169.47 µs]
                        thrpt:  [94.413 Kelem/s 95.098 Kelem/s 95.668 Kelem/s]
Found 16 outliers among 100 measurements (16.00%)
  8 (8.00%) low mild
  3 (3.00%) high mild
  5 (5.00%) high severe
parallel/multi_file_multi_archive/parallel
                        time:   [116.16 µs 116.59 µs 117.09 µs]
                        thrpt:  [136.64 Kelem/s 137.24 Kelem/s 137.74 Kelem/s]
Found 20 outliers among 100 measurements (20.00%)
  1 (1.00%) low severe
  4 (4.00%) low mild
  2 (2.00%) high mild
  13 (13.00%) high severe

parallel/custom_processing/sequential_count
                        time:   [167.94 µs 168.64 µs 169.48 µs]
                        thrpt:  [47.202 Kelem/s 47.439 Kelem/s 47.635 Kelem/s]
Found 13 outliers among 100 measurements (13.00%)
  6 (6.00%) low mild
  4 (4.00%) high mild
  3 (3.00%) high severe
parallel/custom_processing/parallel_count
                        time:   [109.67 µs 110.26 µs 110.89 µs]
                        thrpt:  [72.141 Kelem/s 72.558 Kelem/s 72.946 Kelem/s]
Found 7 outliers among 100 measurements (7.00%)
  4 (4.00%) high mild
  3 (3.00%) high severe

parallel/patch_chain_loading/sequential/2
                        time:   [48.787 µs 49.217 µs 49.681 µs]
                        thrpt:  [40.257 Kelem/s 40.636 Kelem/s 40.995 Kelem/s]
Found 11 outliers among 100 measurements (11.00%)
  9 (9.00%) high mild
  2 (2.00%) high severe
parallel/patch_chain_loading/parallel/2
                        time:   [68.043 µs 68.260 µs 68.507 µs]
                        thrpt:  [29.194 Kelem/s 29.300 Kelem/s 29.393 Kelem/s]
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) low mild
  2 (2.00%) high mild
  6 (6.00%) high severe
parallel/patch_chain_loading/sequential/4
                        time:   [130.54 µs 131.40 µs 132.35 µs]
                        thrpt:  [30.222 Kelem/s 30.442 Kelem/s 30.641 Kelem/s]
Found 3 outliers among 100 measurements (3.00%)
  1 (1.00%) high mild
  2 (2.00%) high severe
parallel/patch_chain_loading/parallel/4
                        time:   [126.27 µs 127.08 µs 127.96 µs]
                        thrpt:  [31.260 Kelem/s 31.476 Kelem/s 31.679 Kelem/s]
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) low mild
  6 (6.00%) high mild
  2 (2.00%) high severe
parallel/patch_chain_loading/sequential/8
                        time:   [410.45 µs 412.42 µs 414.67 µs]
                        thrpt:  [19.292 Kelem/s 19.397 Kelem/s 19.491 Kelem/s]
Found 14 outliers among 100 measurements (14.00%)
  8 (8.00%) low mild
  2 (2.00%) high mild
  4 (4.00%) high severe
parallel/patch_chain_loading/parallel/8
                        time:   [219.41 µs 220.25 µs 221.28 µs]
                        thrpt:  [36.153 Kelem/s 36.322 Kelem/s 36.462 Kelem/s]
Found 19 outliers among 100 measurements (19.00%)
  2 (2.00%) low severe
  4 (4.00%) low mild
  2 (2.00%) high mild
  11 (11.00%) high severe
Benchmarking parallel/patch_chain_loading/sequential/16: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 7.1s, enable flat sampling, or reduce sample count to 50.
parallel/patch_chain_loading/sequential/16
                        time:   [1.3854 ms 1.3927 ms 1.4016 ms]
                        thrpt:  [11.416 Kelem/s 11.489 Kelem/s 11.549 Kelem/s]
Found 17 outliers among 100 measurements (17.00%)
  7 (7.00%) low mild
  5 (5.00%) high mild
  5 (5.00%) high severe
parallel/patch_chain_loading/parallel/16
                        time:   [311.56 µs 312.61 µs 313.90 µs]
                        thrpt:  [50.972 Kelem/s 51.182 Kelem/s 51.354 Kelem/s]
Found 19 outliers among 100 measurements (19.00%)
  3 (3.00%) low mild
  1 (1.00%) high mild
  15 (15.00%) high severe

parallel/patch_chain_operations/read_file
                        time:   [7.5272 µs 7.5837 µs 7.6441 µs]
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) high mild
  3 (3.00%) high severe
parallel/patch_chain_operations/list_all
                        time:   [113.98 µs 114.57 µs 115.29 µs]
Found 17 outliers among 100 measurements (17.00%)
  5 (5.00%) low mild
  10 (10.00%) high mild
  2 (2.00%) high severe
Benchmarking parallel/patch_chain_operations/find_file_archive: Collecting 100 samples in estimated 5.0001 s (132M iterationparallel/patch_chain_operations/find_file_archive
                        time:   [36.991 ns 37.212 ns 37.465 ns]
Found 10 outliers among 100 measurements (10.00%)
  2 (2.00%) high mild
  8 (8.00%) high severe

parallel/scalability/1_threads
                        time:   [673.69 µs 683.43 µs 693.33 µs]
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
  2 (2.00%) high severe
parallel/scalability/2_threads
                        time:   [398.44 µs 400.10 µs 401.78 µs]
Found 9 outliers among 100 measurements (9.00%)
  2 (2.00%) low mild
  3 (3.00%) high mild
  4 (4.00%) high severe
parallel/scalability/4_threads
                        time:   [253.95 µs 254.93 µs 256.11 µs]
Found 10 outliers among 100 measurements (10.00%)
  1 (1.00%) low severe
  1 (1.00%) low mild
  2 (2.00%) high mild
  6 (6.00%) high severe
parallel/scalability/8_threads
                        time:   [272.60 µs 273.84 µs 275.23 µs]
Found 12 outliers among 100 measurements (12.00%)
  3 (3.00%) low mild
  2 (2.00%) high mild
  7 (7.00%) high severe

     Running benches/single_archive_parallel.rs (/home/alar/warcraft-rs/target/release/deps/single_archive_parallel-2f0d34b8c6d98ab9)
Gnuplot not found, using plotters backend
single_archive/multiple_files/sequential/10
                        time:   [110.27 µs 110.82 µs 111.38 µs]
                        thrpt:  [89.787 Kelem/s 90.236 Kelem/s 90.688 Kelem/s]
Found 17 outliers among 100 measurements (17.00%)
  3 (3.00%) low severe
  8 (8.00%) low mild
  2 (2.00%) high mild
  4 (4.00%) high severe
single_archive/multiple_files/parallel/10
                        time:   [123.10 µs 123.80 µs 124.66 µs]
                        thrpt:  [80.220 Kelem/s 80.776 Kelem/s 81.232 Kelem/s]
Found 13 outliers among 100 measurements (13.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
  9 (9.00%) high severe
Benchmarking single_archive/multiple_files/parallel_batched/10: Collecting 100 samples in estimated 5.3215 s (40k iterationssingle_archive/multiple_files/parallel_batched/10
                        time:   [131.48 µs 133.59 µs 136.11 µs]
                        thrpt:  [73.472 Kelem/s 74.857 Kelem/s 76.060 Kelem/s]
Found 13 outliers among 100 measurements (13.00%)
  6 (6.00%) high mild
  7 (7.00%) high severe
single_archive/multiple_files/sequential/50
                        time:   [495.21 µs 497.73 µs 500.51 µs]
                        thrpt:  [99.898 Kelem/s 100.46 Kelem/s 100.97 Kelem/s]
Found 18 outliers among 100 measurements (18.00%)
  4 (4.00%) low severe
  6 (6.00%) low mild
  4 (4.00%) high mild
  4 (4.00%) high severe
single_archive/multiple_files/parallel/50
                        time:   [264.04 µs 266.84 µs 270.88 µs]
                        thrpt:  [184.58 Kelem/s 187.37 Kelem/s 189.37 Kelem/s]
Found 19 outliers among 100 measurements (19.00%)
  1 (1.00%) low severe
  1 (1.00%) low mild
  3 (3.00%) high mild
  14 (14.00%) high severe
Benchmarking single_archive/multiple_files/parallel_batched/50: Collecting 100 samples in estimated 5.8553 s (25k iterationssingle_archive/multiple_files/parallel_batched/50
                        time:   [231.42 µs 232.11 µs 232.82 µs]
                        thrpt:  [214.76 Kelem/s 215.42 Kelem/s 216.06 Kelem/s]
Found 9 outliers among 100 measurements (9.00%)
  2 (2.00%) low mild
  5 (5.00%) high mild
  2 (2.00%) high severe
Benchmarking single_archive/multiple_files/sequential/100: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 5.0s, enable flat sampling, or reduce sample count to 70.
single_archive/multiple_files/sequential/100
                        time:   [972.93 µs 977.81 µs 983.16 µs]
                        thrpt:  [101.71 Kelem/s 102.27 Kelem/s 102.78 Kelem/s]
Found 20 outliers among 100 measurements (20.00%)
  5 (5.00%) low severe
  3 (3.00%) low mild
  3 (3.00%) high mild
  9 (9.00%) high severe
single_archive/multiple_files/parallel/100
                        time:   [443.75 µs 457.80 µs 474.38 µs]
                        thrpt:  [210.80 Kelem/s 218.44 Kelem/s 225.35 Kelem/s]
Found 20 outliers among 100 measurements (20.00%)
  4 (4.00%) low mild
  3 (3.00%) high mild
  13 (13.00%) high severe
Benchmarking single_archive/multiple_files/parallel_batched/100: Collecting 100 samples in estimated 5.2175 s (15k iterationsingle_archive/multiple_files/parallel_batched/100
                        time:   [344.90 µs 345.91 µs 346.93 µs]
                        thrpt:  [288.24 Kelem/s 289.10 Kelem/s 289.94 Kelem/s]
Found 9 outliers among 100 measurements (9.00%)
  1 (1.00%) low severe
  2 (2.00%) low mild
  5 (5.00%) high mild
  1 (1.00%) high severe
Benchmarking single_archive/multiple_files/sequential/200: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 10.0s, enable flat sampling, or reduce sample count to 40.
single_archive/multiple_files/sequential/200
                        time:   [1.9368 ms 1.9435 ms 1.9510 ms]
                        thrpt:  [102.51 Kelem/s 102.91 Kelem/s 103.26 Kelem/s]
Found 13 outliers among 100 measurements (13.00%)
  5 (5.00%) low severe
  3 (3.00%) high mild
  5 (5.00%) high severe
single_archive/multiple_files/parallel/200
                        time:   [793.92 µs 796.67 µs 799.13 µs]
                        thrpt:  [250.27 Kelem/s 251.05 Kelem/s 251.91 Kelem/s]
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
Benchmarking single_archive/multiple_files/parallel_batched/200: Collecting 100 samples in estimated 5.6020 s (10k iterationsingle_archive/multiple_files/parallel_batched/200
                        time:   [546.79 µs 552.19 µs 559.48 µs]
                        thrpt:  [357.48 Kelem/s 362.19 Kelem/s 365.77 Kelem/s]
Found 16 outliers among 100 measurements (16.00%)
  4 (4.00%) high mild
  12 (12.00%) high severe

single_archive/pattern_matching/sequential
                        time:   [508.58 µs 511.20 µs 514.31 µs]
                        thrpt:  [1.9444 Melem/s 1.9562 Melem/s 1.9663 Melem/s]
Found 14 outliers among 100 measurements (14.00%)
  1 (1.00%) low severe
  5 (5.00%) low mild
  2 (2.00%) high mild
  6 (6.00%) high severe
single_archive/pattern_matching/parallel
                        time:   [587.57 µs 590.16 µs 593.18 µs]
                        thrpt:  [1.6858 Melem/s 1.6945 Melem/s 1.7019 Melem/s]
Found 21 outliers among 100 measurements (21.00%)
  1 (1.00%) low mild
  4 (4.00%) high mild
  16 (16.00%) high severe

single_archive/file_size_impact/sequential/0.1MB
                        time:   [567.60 µs 571.61 µs 575.68 µs]
                        thrpt:  [169.64 MiB/s 170.85 MiB/s 172.05 MiB/s]
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe
single_archive/file_size_impact/parallel/0.1MB
                        time:   [332.20 µs 334.49 µs 337.50 µs]
                        thrpt:  [289.35 MiB/s 291.96 MiB/s 293.97 MiB/s]
Found 16 outliers among 100 measurements (16.00%)
  4 (4.00%) high mild
  12 (12.00%) high severe
single_archive/file_size_impact/sequential/0.5MB
                        time:   [481.06 µs 483.45 µs 486.42 µs]
                        thrpt:  [1003.8 MiB/s 1010.0 MiB/s 1015.0 MiB/s]
Found 21 outliers among 100 measurements (21.00%)
  6 (6.00%) low severe
  4 (4.00%) low mild
  4 (4.00%) high mild
  7 (7.00%) high severe
single_archive/file_size_impact/parallel/0.5MB
                        time:   [217.56 µs 219.15 µs 221.07 µs]
                        thrpt:  [2.1570 GiB/s 2.1759 GiB/s 2.1918 GiB/s]
Found 19 outliers among 100 measurements (19.00%)
  1 (1.00%) low severe
  3 (3.00%) low mild
  3 (3.00%) high mild
  12 (12.00%) high severe
single_archive/file_size_impact/sequential/1.0MB
                        time:   [508.83 µs 510.65 µs 512.57 µs]
                        thrpt:  [1.8606 GiB/s 1.8676 GiB/s 1.8742 GiB/s]
Found 13 outliers among 100 measurements (13.00%)
  1 (1.00%) low severe
  4 (4.00%) low mild
  3 (3.00%) high mild
  5 (5.00%) high severe
single_archive/file_size_impact/parallel/1.0MB
                        time:   [241.59 µs 243.62 µs 247.13 µs]
                        thrpt:  [3.8591 GiB/s 3.9145 GiB/s 3.9475 GiB/s]
Found 18 outliers among 100 measurements (18.00%)
  2 (2.00%) low mild
  7 (7.00%) high mild
  9 (9.00%) high severe
  single_archive/multiple_files/sequential/10
                        time:   [105.55 µs 106.31 µs 107.24 µs]
                        thrpt:  [93.247 Kelem/s 94.064 Kelem/s 94.746 Kelem/s]
                 change:
                        time:   [−5.1337% −3.3529% −1.3720%] (p = 0.00 < 0.05)
                        thrpt:  [+1.3911% +3.4692% +5.4115%]
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  3 (3.00%) high mild
  5 (5.00%) high severe
single_archive/multiple_files/parallel/10
                        time:   [121.58 µs 122.48 µs 123.42 µs]
                        thrpt:  [81.025 Kelem/s 81.647 Kelem/s 82.250 Kelem/s]
                 change:
                        time:   [−4.0471% −2.1591% −0.5527%] (p = 0.01 < 0.05)
                        thrpt:  [+0.5557% +2.2067% +4.2178%]
                        Change within noise threshold.
Found 10 outliers among 100 measurements (10.00%)
  6 (6.00%) high mild
  4 (4.00%) high severe
Benchmarking single_archive/multiple_files/parallel_batched/10: Collecting 100 samples in estimated 5.5432 s (40k iterationssingle_archive/multiple_files/parallel_batched/10
                        time:   [138.83 µs 140.31 µs 141.90 µs]
                        thrpt:  [70.474 Kelem/s 71.270 Kelem/s 72.029 Kelem/s]
                 change:
                        time:   [+2.1130% +4.1234% +5.9968%] (p = 0.00 < 0.05)
                        thrpt:  [−5.6575% −3.9601% −2.0693%]
                        Performance has regressed.
Found 9 outliers among 100 measurements (9.00%)
  6 (6.00%) low mild
  3 (3.00%) high severe
single_archive/multiple_files/sequential/50
                        time:   [498.09 µs 507.86 µs 518.96 µs]
                        thrpt:  [96.346 Kelem/s 98.453 Kelem/s 100.38 Kelem/s]
                 change:
                        time:   [−2.8240% −0.3565% +1.9612%] (p = 0.78 > 0.05)
                        thrpt:  [−1.9235% +0.3578% +2.9061%]
                        No change in performance detected.
Found 6 outliers among 100 measurements (6.00%)
  4 (4.00%) high mild
  2 (2.00%) high severe
single_archive/multiple_files/parallel/50
                        time:   [272.44 µs 274.98 µs 277.91 µs]
                        thrpt:  [179.91 Kelem/s 181.83 Kelem/s 183.52 Kelem/s]
                 change:
                        time:   [+3.1747% +4.8672% +6.4313%] (p = 0.00 < 0.05)
                        thrpt:  [−6.0427% −4.6413% −3.0770%]
                        Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
Benchmarking single_archive/multiple_files/parallel_batched/50: Collecting 100 samples in estimated 5.9741 s (25k iterationssingle_archive/multiple_files/parallel_batched/50
                        time:   [233.82 µs 235.57 µs 237.49 µs]
                        thrpt:  [210.54 Kelem/s 212.25 Kelem/s 213.84 Kelem/s]
                 change:
                        time:   [+1.5772% +3.2588% +4.9688%] (p = 0.00 < 0.05)
                        thrpt:  [−4.7336% −3.1559% −1.5527%]
                        Performance has regressed.
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe
Benchmarking single_archive/multiple_files/sequential/100: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 5.2s, enable flat sampling, or reduce sample count to 60.
single_archive/multiple_files/sequential/100
                        time:   [990.26 µs 1.0066 ms 1.0238 ms]
                        thrpt:  [97.675 Kelem/s 99.347 Kelem/s 100.98 Kelem/s]
                 change:
                        time:   [−1.3207% +1.8993% +5.1764%] (p = 0.26 > 0.05)
                        thrpt:  [−4.9217% −1.8639% +1.3384%]
                        No change in performance detected.
Found 7 outliers among 100 measurements (7.00%)
  4 (4.00%) high mild
  3 (3.00%) high severe
single_archive/multiple_files/parallel/100
                        time:   [470.20 µs 474.67 µs 478.72 µs]
                        thrpt:  [208.89 Kelem/s 210.67 Kelem/s 212.68 Kelem/s]
                 change:
                        time:   [+1.5547% +4.7691% +7.7088%] (p = 0.00 < 0.05)
                        thrpt:  [−7.1571% −4.5520% −1.5309%]
                        Performance has regressed.
Found 14 outliers among 100 measurements (14.00%)
  3 (3.00%) low severe
  6 (6.00%) low mild
  4 (4.00%) high mild
  1 (1.00%) high severe
Benchmarking single_archive/multiple_files/parallel_batched/100: Collecting 100 samples in estimated 5.4062 s (15k iterationsingle_archive/multiple_files/parallel_batched/100
                        time:   [350.81 µs 353.17 µs 355.67 µs]
                        thrpt:  [281.16 Kelem/s 283.15 Kelem/s 285.05 Kelem/s]
                 change:
                        time:   [+2.3522% +3.0716% +3.8736%] (p = 0.00 < 0.05)
                        thrpt:  [−3.7291% −2.9801% −2.2982%]
                        Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
  1 (1.00%) low mild
  2 (2.00%) high mild
single_archive/multiple_files/sequential/200
                        time:   [1.9288 ms 1.9573 ms 1.9872 ms]
                        thrpt:  [100.64 Kelem/s 102.18 Kelem/s 103.69 Kelem/s]
                 change:
                        time:   [−2.2072% −0.0835% +1.8456%] (p = 0.94 > 0.05)
                        thrpt:  [−1.8121% +0.0835% +2.2570%]
                        No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
single_archive/multiple_files/parallel/200
                        time:   [837.88 µs 852.94 µs 867.77 µs]
                        thrpt:  [230.48 Kelem/s 234.48 Kelem/s 238.70 Kelem/s]
                 change:
                        time:   [+7.5918% +9.6085% +11.397%] (p = 0.00 < 0.05)
                        thrpt:  [−10.231% −8.7662% −7.0561%]
                        Performance has regressed.
Benchmarking single_archive/multiple_files/parallel_batched/200: Collecting 100 samples in estimated 5.8367 s (10k iterationsingle_archive/multiple_files/parallel_batched/200
                        time:   [563.94 µs 568.55 µs 573.74 µs]
                        thrpt:  [348.59 Kelem/s 351.78 Kelem/s 354.65 Kelem/s]
                 change:
                        time:   [−2.1651% +0.4393% +2.8798%] (p = 0.75 > 0.05)
                        thrpt:  [−2.7992% −0.4374% +2.2130%]
                        No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild

single_archive/pattern_matching/sequential
                        time:   [512.66 µs 523.40 µs 535.52 µs]
                        thrpt:  [1.8674 Melem/s 1.9106 Melem/s 1.9506 Melem/s]
                 change:
                        time:   [+0.1751% +2.7662% +5.2097%] (p = 0.03 < 0.05)
                        thrpt:  [−4.9517% −2.6918% −0.1748%]
                        Change within noise threshold.
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe
  single_archive/pattern_matching/parallel
                        time:   [607.42 µs 611.18 µs 615.07 µs]
                        thrpt:  [1.6258 Melem/s 1.6362 Melem/s 1.6463 Melem/s]
                 change:
                        time:   [+1.8342% +3.2335% +4.7264%] (p = 0.00 < 0.05)
                        thrpt:  [−4.5131% −3.1323% −1.8012%]
                        Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe
 single_archive/file_size_impact/sequential/0.1MB
                        time:   [585.60 µs 594.44 µs 604.43 µs]
                        thrpt:  [161.57 MiB/s 164.28 MiB/s 166.76 MiB/s]
                 change:
                        time:   [+1.2720% +3.7668% +6.4122%] (p = 0.00 < 0.05)
                        thrpt:  [−6.0258% −3.6301% −1.2560%]
                        Performance has regressed.
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe
single_archive/file_size_impact/parallel/0.1MB
                        time:   [352.48 µs 355.62 µs 358.96 µs]
                        thrpt:  [272.05 MiB/s 274.61 MiB/s 277.06 MiB/s]
                 change:
                        time:   [+3.8784% +5.4785% +7.1635%] (p = 0.00 < 0.05)
                        thrpt:  [−6.6846% −5.1940% −3.7336%]
                        Performance has regressed.
Found 5 outliers among 100 measurements (5.00%)
  3 (3.00%) high mild
  2 (2.00%) high severe
single_archive/file_size_impact/sequential/0.5MB
                        time:   [497.02 µs 505.70 µs 514.97 µs]
                        thrpt:  [948.17 MiB/s 965.55 MiB/s 982.41 MiB/s]
                 change:
                        time:   [+2.7665% +5.7928% +9.5660%] (p = 0.00 < 0.05)
                        thrpt:  [−8.7308% −5.4756% −2.6920%]
                        Performance has regressed.
Found 8 outliers among 100 measurements (8.00%)
  3 (3.00%) high mild
  5 (5.00%) high severe
 single_archive/file_size_impact/parallel/0.5MB
                        time:   [229.28 µs 231.22 µs 233.15 µs]
                        thrpt:  [2.0452 GiB/s 2.0623 GiB/s 2.0797 GiB/s]
                 change:
                        time:   [+4.0242% +6.1983% +8.8921%] (p = 0.00 < 0.05)
                        thrpt:  [−8.1659% −5.8366% −3.8685%]
                        Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high severe
 single_archive/file_size_impact/sequential/1.0MB
                        time:   [523.01 µs 530.12 µs 537.55 µs]
                        thrpt:  [1.7741 GiB/s 1.7990 GiB/s 1.8234 GiB/s]
                 change:
                        time:   [+1.4532% +4.2637% +7.2094%] (p = 0.00 < 0.05)
                        thrpt:  [−6.7246% −4.0893% −1.4324%]
                        Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
  1 (1.00%) high mild
  2 (2.00%) high severe
 single_archive/file_size_impact/parallel/1.0MB
                        time:   [246.36 µs 247.52 µs 248.73 µs]
                        thrpt:  [3.8342 GiB/s 3.8530 GiB/s 3.8711 GiB/s]
                 change:
                        time:   [+0.1553% +1.4840% +2.7300%] (p = 0.02 < 0.05)
                        thrpt:  [−2.6575% −1.4623% −0.1550%]
                        Change within noise threshold.
Found 4 outliers among 100 measurements (4.00%)
  2 (2.00%) low mild
  1 (1.00%) high mild
  1 (1.00%) high severe

Breaking Changes

API Changes

Migration Guide

Security Considerations

  • No security implications
  • Security improvement
  • Potential security impact (reviewed and justified)

Additional Context

Dependencies

Known Limitations

Screenshots/Examples


Reviewer Notes

Areas of Focus

Questions for Reviewers


By submitting this PR, I confirm that:

  • I have read and agree to the Contributing Guidelines
  • This PR is ready for review (not a draft)
  • I am willing to address feedback and make necessary changes
  • I understand this may take time to review and merge

Signed-off-by: Alaro <glooriouswalrus@protonmail.com>
@danielsreichenbach
Copy link
Member

@alardev let me know if I can help. Looks like a good start though.

@codecov
Copy link

codecov bot commented Aug 7, 2025

Codecov Report

❌ Patch coverage is 22.93578% with 84 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
file-formats/archives/wow-mpq/src/archive.rs 22.93% 84 Missing ⚠️

📢 Thoughts on this report? Let us know!

Signed-off-by: Alaro <glooriouswalrus@protonmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Read Archive from a buffer of bytes

2 participants