---
title: "OneMedia speed rows, stage 0.3 (arm64)"
url: https://recursiveai.org/onemedia/docs/bench-arm64-0-3/
description: "The 0.3 speed run on arm64 (Apple M2, macOS): the mux, remux and tag-write rows (MP4 mux and remux, ID3, FLAC, MP4 ilst, WAV and Matroska tag writes), Matroska muxing, remux memory over 4 GiB and MakePlayable, each row against the bar."
version: "0.3.0-preview.2"
source: https://github.com/recursive-ai-oss/onemedia-csharp/blob/051a1afab3ead45b3deca647572d3a79253c71a1/docs/bench-results/0.3-arm64.md
---

# OneMedia speed rows, stage 0.3 (arm64)

Three publishable runs under the exclusive bench queue, one per filtered group, 3 repetitions (tools 3), run on the build of 2026-11-02 (main 33c568d plus the bench rows). Groups: A `mp4-mux`, `mp4-remux`, `mkv-mux`; B `tagw-id3`, `tagw-flac`, `tagw-ilst`, `tagw-riff`, `tagw-mkv`; C `remux-mem`, `playable`. Comparators: SharpMP4 0.3.2, TagLib# 2.3.0, ATL.NET 7.19. Method: [docs/bench.md](https://recursiveai.org/onemedia/docs/bench/).

## Against the bar

Bar: geometric mean of the ratios <= 1.00x and no file worse than 1.25x, against the fastest managed comparator per file.

| Row | Files with a ratio | Geomean | Worst | Verdict |
|---|---:|---:|---:|---|
| mp4-mux | 3/3 | 0.09× | 0.18× | at the bar |
| mp4-remux | 3/3 | 0.08× | 0.15× | at the bar |
| mkv-mux | 0/5 | - | - | no managed comparator, so the row passes (times are information) |
| tagw-id3 | 4/4 | 0.49× | 0.53× | at the bar |
| tagw-flac | 2/2 | 0.52× | 0.52× | at the bar |
| tagw-ilst | 2/2 | 0.41× | 0.48× | at the bar |
| tagw-riff | 3/3 | 0.46× | 0.54× | at the bar |
| tagw-mkv | 1/2 | 1.09× | 1.09× | within the 1.25× row limit |
| remux-mem | 0/2 | - | - | no managed comparator, so the row passes (times are information) |
| playable | 0/1 | - | - | no managed comparator, so the row passes (times are information) |

Notes

- Each group ran as its own job under the exclusive benchmark queue, alone on the machine. Mac corpus: the files of the 0.2 run plus `h264-aac-tags.mp4`, `audio-aac-priming.m4a`, `h264-two-audio-tags.mkv` and the two files over 4 GiB, regenerated with `tools/corpus/generate.sh` (ffmpeg 8.0 there, so the bytes differ from the x64 corpus' files of the same name). `flac-cover-tags.flac` is not in the Mac corpus, so `tagw-flac` has two files.
- Tag-write rows edit the same four common fields of a file held in memory; the ratio is against TagLib#, the fastest managed comparator on every file. ATL.NET is 1.6x to 14x slower than TagLib# (its ratio column), least on WAV and most on `ilst`.
- **`tagw-mkv` is the slowest row on this machine: 1.09x on its one file**, inside the 1.25x per-row limit; the tag-write geomean stays under 1.0x (TagLib# is the only comparator that can edit it; ATL.NET fails on both Matroska files and TagLib# on `test1.mkv`). On x64 the same row is 0.99x. A row with one file and a comparator that handles almost no Matroska is thin evidence in either direction.
- Rows `mkv-mux`, `remux-mem` and `playable` have no managed comparator, so they pass; times next to ffmpeg 8.0 and mkvmerge 103.0 are information.
- `remux-mem`: the bench's own peak figure is blank on macOS (the runtime reports no peak working set there), so the peaks were taken separately with `/usr/bin/time -l` around one child process per cell (one cold run plus the big-file samples each): 4.08 GiB MP4 to Matroska 73.3 MiB, to MP4 70.5 MiB; 4.14 GiB Matroska to Matroska 96.4 MiB, to MP4 90.6 MiB (ffmpeg `-c copy` 99.7 MiB and 40.7 MiB). Times on this Mac (10 to 27 s) are bound by the disk write, not by the remuxer.
- `playable`: 13.4 ms here, against 31.1 ms for ffmpeg 8.0 (information).


# Group A: mp4-mux, mp4-remux, mkv-mux

## Run 2026-11-02 04:35Z

- Machine: Apple M2; 8 logical cores; macOS 27.0.1 Arm64
- ISA: neon crc32 aes dotprod
- Storage of the corpus: /dev/disk3s5; every file is read once before its rows, so it is in the page cache for all of them
- .NET: 10.0.11 (.NET 10.0.11)
- Load average (1 min): before 3.90; during mean 3.51, max 3.90 over 11 samples at 5 s; after 3.22
- Elapsed: 0.8 min; repetitions 3 (managed), 3 (tools); files over 1 GiB get one warm-up run and 3 samples of one run each, and tools once
- Packages as restored: SharpMP4 0.3.2; RecursiveAI.OneAudio 1.6.1; MetadataExtractor 2.9.3; TagLibSharp 2.3.0.0; z440.atl.core 7.19; Matroska 0.0.12
- Tools: ffmpeg version 8.0 Copyright (c) 2000-2025 the FFmpeg developers; MP4Box - GPAC version 26.07-revrelease; mkvmerge v103.0 ('The Darkness') 64-bit; MediaInfo MediaInfo Command line,; ExifTool 13.60

Ratio is OneMedia's median over the fastest managed comparator's median on the same file (below 1.00× is faster). Peak is the process's peak resident set; Baseline is its resident set before any work, so Peak − Baseline is what the work added.

## mp4-mux: MP4: write the first AAC track's frames from memory to an MP4 in memory

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/mp4/h264-aac.mp4 | 0.2 MiB | OneMedia | 43.9 µs | 0.06× | 1.0 MiB | 5639.4 B | 189 | 0.0 | - | - | 41.3 | cold first run 32.86 ms |
| generated/mp4/h264-aac.mp4 | 0.2 MiB | OneMedia, movie box last | 40.7 µs | 0.06× | 1.0 MiB | 5610.2 B | 189 | 0.0 | - | - | 41.0 | cold first run 32.36 ms |
| generated/mp4/h264-aac.mp4 | 0.2 MiB | SharpMP4 | 693.8 µs | 1.00× | 1.4 MiB | 8009.8 B | 189 | 0.0 | - | - | 41.0 | cold first run 37.57 ms |
| samples/MPEG-4/video.mp4 | 26.6 MiB | OneMedia | 490.1 µs | 0.05× | 3.0 MiB | 439.4 B | 7200 | 2.0 | - | - | 41.1 | cold first run 36.03 ms |
| samples/MPEG-4/video.mp4 | 26.6 MiB | OneMedia, movie box last | 539.4 µs | 0.06× | 3.0 MiB | 438.5 B | 7200 | 2.0 | - | - | 41.2 | cold first run 34.96 ms |
| samples/MPEG-4/video.mp4 | 26.6 MiB | SharpMP4 | 9.03 ms | 1.00× | 17.5 MiB | 2551.0 B | 7200 | 2.0 | - | - | 41.0 | cold first run 59.35 ms |
| generated/bench/frag-bbb-1080p.mp4 | 691.5 MiB | OneMedia | 16.68 ms | 0.18× | 63.0 MiB | 2363.3 B | 27960 | 31.2 | - | - | 41.1 | cold first run 82.81 ms |
| generated/bench/frag-bbb-1080p.mp4 | 691.5 MiB | OneMedia, movie box last | 8.02 ms | 0.09× | 63.0 MiB | 2363.1 B | 27960 | 31.2 | - | - | 41.1 | cold first run 66.96 ms |
| generated/bench/frag-bbb-1080p.mp4 | 691.5 MiB | SharpMP4 | 92.49 ms | 1.00× | 103.7 MiB | 3889.9 B | 27960 | 31.3 | - | - | 41.3 | cold first run 208.01 ms |

## mp4-remux: MP4: read the first AAC track from a file and write it as an MP4 in memory

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/mp4/h264-aac.mp4 | 0.2 MiB | OneMedia | 113.0 µs | 0.06× | 1.1 MiB | 6347.9 B | 189 | 0.0 | - | - | 41.1 | cold first run 48.00 ms |
| generated/mp4/h264-aac.mp4 | 0.2 MiB | SharpMP4 | 1.92 ms | 1.00× | 2.6 MiB | 14687.3 B | 189 | 0.0 | - | - | 41.2 | cold first run 67.58 ms |
| samples/MPEG-4/video.mp4 | 26.6 MiB | OneMedia | 1.24 ms | 0.06× | 3.2 MiB | 464.3 B | 7200 | 2.0 | - | - | 41.0 | cold first run 53.06 ms |
| samples/MPEG-4/video.mp4 | 26.6 MiB | SharpMP4 | 20.12 ms | 1.00× | 34.7 MiB | 5052.8 B | 7200 | 2.0 | - | - | 41.0 | cold first run 120.43 ms |
| generated/bench/frag-bbb-1080p.mp4 | 691.5 MiB | OneMedia | 21.91 ms | 0.15× | 63.1 MiB | 2368.1 B | 27960 | 31.2 | - | - | 41.2 | cold first run 94.40 ms |
| generated/bench/frag-bbb-1080p.mp4 | 691.5 MiB | SharpMP4 | 142.93 ms | 1.00× | 243.3 MiB | 9122.6 B | 27960 | 31.3 | - | - | 41.1 | cold first run 404.76 ms |

Reference tools, run as processes (wall time including start-up, peak resident set); information only:

| File | Tool | Wall median | Wall min – max | Peak MiB | Note |
|---|---|---:|---:|---:|---|
| generated/bench/frag-bbb-1080p.mp4 | ffmpeg -c copy -map 0:a:0 -f mp4 | 100.78 ms | 99.70 ms – 101.79 ms | 84.8 |  |
| generated/mp4/h264-aac.mp4 | ffmpeg -c copy -map 0:a:0 -f mp4 | 30.81 ms | 30.29 ms – 38.43 ms | 18.3 |  |
| samples/MPEG-4/video.mp4 | ffmpeg -c copy -map 0:a:0 -f mp4 | 42.84 ms | 41.56 ms – 44.89 ms | 19.8 |  |

## mkv-mux: Matroska/WebM: read every packet and write it to a new Matroska file (no managed Matroska writer to compare with)

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/mkv/h264-aac.mkv | 0.2 MiB | OneMedia | 203.1 µs | - | 1.3 MiB | 4336.3 B | 309 | 0.2 | - | - | 41.1 | cold first run 35.55 ms |
| matroska-test-files/test1.mkv | 22.3 MiB | OneMedia | 3.74 ms | - | 9.1 MiB | 1671.9 B | 5735 | 22.2 | - | - | 41.2 | cold first run 45.84 ms |
| matroska-test-files/test5.mkv | 30.3 MiB | OneMedia | 4.06 ms | - | 5.0 MiB | 1231.9 B | 4298 | 30.3 | - | - | 41.1 | cold first run 46.18 ms |
| blender/Sintel.2010.1080p.mkv | 1.10 GiB | OneMedia | 129.54 ms | - | 33.2 MiB | 705.1 B | 49323 | 1125.2 | - | - | 41.0 | cold first run 252.81 ms |
| blender/tears_of_steel_1080p.webm | 544.9 MiB | OneMedia | 69.44 ms | - | 33.3 MiB | 436.9 B | 80000 | 544.6 | - | - | 41.0 | cold first run 186.24 ms |

Reference tools, run as processes (wall time including start-up, peak resident set); information only:

| File | Tool | Wall median | Wall min – max | Peak MiB | Note |
|---|---|---:|---:|---:|---|
| blender/Sintel.2010.1080p.mkv | ffmpeg -c copy -f matroska | 1.32 s | 1.32 s – 1.32 s | 90.6 |  |
| blender/Sintel.2010.1080p.mkv | mkvmerge | 322.29 ms | 322.29 ms – 322.29 ms | 97.0 | exit 1 |
| blender/tears_of_steel_1080p.webm | ffmpeg -c copy -f matroska | 224.86 ms | 223.85 ms – 231.85 ms | 29.1 |  |
| blender/tears_of_steel_1080p.webm | mkvmerge | 223.34 ms | 221.49 ms – 226.95 ms | 59.9 | exit 1 |
| generated/mkv/h264-aac.mkv | ffmpeg -c copy -f matroska | 31.40 ms | 30.70 ms – 33.02 ms | 18.1 |  |
| generated/mkv/h264-aac.mkv | mkvmerge | 48.30 ms | 47.09 ms – 80.28 ms | 17.6 | exit 1 |
| matroska-test-files/test1.mkv | ffmpeg -c copy -f matroska | 60.96 ms | 60.58 ms – 62.93 ms | 18.0 |  |
| matroska-test-files/test1.mkv | mkvmerge | 61.85 ms | 61.42 ms – 62.12 ms | 55.6 | exit 1 |
| matroska-test-files/test5.mkv | ffmpeg -c copy -f matroska | 84.15 ms | 84.07 ms – 84.99 ms | 34.4 |  |
| matroska-test-files/test5.mkv | mkvmerge | 65.05 ms | 64.84 ms – 65.28 ms | 70.9 | exit 1 |

# Group B: tagw-id3, tagw-flac, tagw-ilst, tagw-riff, tagw-mkv

## Run 2026-11-02 04:36Z

- Machine: Apple M2; 8 logical cores; macOS 27.0.1 Arm64
- ISA: neon crc32 aes dotprod
- Storage of the corpus: /dev/disk3s5; every file is read once before its rows, so it is in the page cache for all of them
- .NET: 10.0.11 (.NET 10.0.11)
- Load average (1 min): before 3.22; during mean 2.88, max 3.22 over 13 samples at 5 s; after 2.78
- Elapsed: 1.0 min; repetitions 3 (managed), 3 (tools); files over 1 GiB get one warm-up run and 3 samples of one run each, and tools once
- Packages as restored: SharpMP4 0.3.2; RecursiveAI.OneAudio 1.6.1; MetadataExtractor 2.9.3; TagLibSharp 2.3.0.0; z440.atl.core 7.19; Matroska 0.0.12
- Tools: ffmpeg version 8.0 Copyright (c) 2000-2025 the FFmpeg developers; MP4Box - GPAC version 26.07-revrelease; mkvmerge v103.0 ('The Darkness') 64-bit; MediaInfo MediaInfo Command line,; ExifTool 13.60

Ratio is OneMedia's median over the fastest managed comparator's median on the same file (below 1.00× is faster). Peak is the process's peak resident set; Baseline is its resident set before any work, so Peak − Baseline is what the work added.

## tagw-id3: MP3: change title, artist, album and comment; the edited file in memory

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/audio-es/tagged/id3v24-basic.mp3 | 0.0 MiB | OneMedia | 10.7 µs | 0.48× | 77.8 KiB | 79656.0 B | 1 | - | - | - | 41.0 | cold first run 25.76 ms |
| generated/audio-es/tagged/id3v24-basic.mp3 | 0.0 MiB | ATL.NET | 171.8 µs | 7.73× | 938.2 KiB | 960749.3 B | 1 | - | - | - | 41.1 | cold first run 50.77 ms |
| generated/audio-es/tagged/id3v24-basic.mp3 | 0.0 MiB | TagLib# | 22.2 µs | 1.00× | 140.5 KiB | 143835.9 B | 1 | - | - | - | 41.0 | fastest comparator; cold first run 18.95 ms |
| generated/audio-es/tagged/id3v23-and-v1.mp3 | 0.0 MiB | OneMedia | 11.1 µs | 0.53× | 79.4 KiB | 81256.0 B | 1 | - | - | - | 41.0 | cold first run 25.21 ms |
| generated/audio-es/tagged/id3v23-and-v1.mp3 | 0.0 MiB | ATL.NET | 162.5 µs | 7.74× | 1.0 MiB | 1073305.1 B | 1 | - | - | - | 41.1 | cold first run 50.78 ms |
| generated/audio-es/tagged/id3v23-and-v1.mp3 | 0.0 MiB | TagLib# | 21.0 µs | 1.00× | 137.9 KiB | 141202.0 B | 1 | - | - | - | 41.1 | fastest comparator; cold first run 15.17 ms |
| generated/audio-es/tagged/id3v22-basic.mp3 | 0.0 MiB | OneMedia | 11.8 µs | 0.44× | 80.3 KiB | 82184.0 B | 1 | - | - | - | 41.1 | cold first run 25.20 ms |
| generated/audio-es/tagged/id3v22-basic.mp3 | 0.0 MiB | ATL.NET | 197.9 µs | 7.41× | 937.5 KiB | 959958.2 B | 1 | - | - | - | 41.0 | cold first run 48.57 ms |
| generated/audio-es/tagged/id3v22-basic.mp3 | 0.0 MiB | TagLib# | 26.7 µs | 1.00× | 138.2 KiB | 141554.0 B | 1 | - | - | - | 41.2 | fastest comparator; cold first run 18.92 ms |
| generated/audio-es/tagged/apev2-only.mp3 | 0.0 MiB | OneMedia | 8.5 µs | 0.52× | 67.6 KiB | 69264.0 B | 1 | - | - | - | 41.1 | cold first run 24.83 ms |
| generated/audio-es/tagged/apev2-only.mp3 | 0.0 MiB | ATL.NET | 128.2 µs | 7.84× | 1.0 MiB | 1079862.1 B | 1 | - | - | - | 41.2 | cold first run 48.79 ms |
| generated/audio-es/tagged/apev2-only.mp3 | 0.0 MiB | TagLib# | 16.3 µs | 1.00× | 116.8 KiB | 119629.9 B | 1 | - | - | - | 41.2 | fastest comparator; cold first run 19.09 ms |

## tagw-flac: FLAC: change title, artist, album and comment; the edited file in memory

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/xiph-flv/flac/tags.flac | 0.1 MiB | OneMedia | 6.2 µs | 0.52× | 70.3 KiB | 72024.0 B | 1 | - | - | - | 41.1 | cold first run 18.47 ms |
| generated/xiph-flv/flac/tags.flac | 0.1 MiB | ATL.NET | 152.0 µs | 12.76× | 784.0 KiB | 802792.6 B | 1 | - | - | - | 41.1 | cold first run 40.97 ms |
| generated/xiph-flv/flac/tags.flac | 0.1 MiB | TagLib# | 11.9 µs | 1.00× | 144.1 KiB | 147592.0 B | 1 | - | - | - | 41.2 | fastest comparator; cold first run 9.24 ms |
| generated/xiph-flv/tagvar/flac-rich.flac | 0.1 MiB | OneMedia | 6.7 µs | 0.51× | 73.0 KiB | 74744.0 B | 1 | - | - | - | 41.1 | cold first run 18.61 ms |
| generated/xiph-flv/tagvar/flac-rich.flac | 0.1 MiB | ATL.NET | 166.2 µs | 12.78× | 814.6 KiB | 834177.4 B | 1 | - | - | - | 41.1 | cold first run 41.67 ms |
| generated/xiph-flv/tagvar/flac-rich.flac | 0.1 MiB | TagLib# | 13.0 µs | 1.00× | 150.9 KiB | 154569.8 B | 1 | - | - | - | 41.1 | fastest comparator; cold first run 8.76 ms |

## tagw-ilst: MP4/M4A: change title, artist, album and comment in `ilst`; the edited file in memory

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/mp4/h264-aac-tags.mp4 | 0.2 MiB | OneMedia | 32.2 µs | 0.35× | 368.0 KiB | 376784.0 B | 1 | - | - | - | 41.0 | cold first run 20.62 ms |
| generated/mp4/h264-aac-tags.mp4 | 0.2 MiB | ATL.NET | 1.27 ms | 13.98× | 1.9 MiB | 2027397.8 B | 1 | - | - | - | 41.1 | cold first run 54.06 ms |
| generated/mp4/h264-aac-tags.mp4 | 0.2 MiB | TagLib# | 91.0 µs | 1.00× | 414.1 KiB | 424013.0 B | 1 | - | - | - | 41.1 | fastest comparator; cold first run 11.83 ms |
| generated/editlist/audio-aac-priming.m4a | 0.0 MiB | OneMedia | 8.7 µs | 0.48× | 139.5 KiB | 142816.0 B | 1 | - | - | - | 41.2 | cold first run 20.37 ms |
| generated/editlist/audio-aac-priming.m4a | 0.0 MiB | ATL.NET | 186.1 µs | 10.30× | 1.1 MiB | 1102529.7 B | 1 | - | - | - | 41.0 | cold first run 53.73 ms |
| generated/editlist/audio-aac-priming.m4a | 0.0 MiB | TagLib# | 18.1 µs | 1.00× | 142.4 KiB | 145785.8 B | 1 | - | - | - | 41.0 | fastest comparator; cold first run 11.14 ms |

## tagw-riff: WAV: change `LIST INFO` title, artist, album and comment; the edited file in memory

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/pcm/tagged-wav-info.wav | 0.5 MiB | OneMedia | 58.0 µs | 0.43× | 533.0 KiB | 545768.0 B | 1 | - | - | - | 41.1 | cold first run 18.05 ms |
| generated/pcm/tagged-wav-info.wav | 0.5 MiB | ATL.NET | 219.4 µs | 1.64× | 1.1 MiB | 1181618.7 B | 1 | - | - | - | 41.0 | cold first run 41.95 ms |
| generated/pcm/tagged-wav-info.wav | 0.5 MiB | TagLib# | 133.8 µs | 1.00× | 582.8 KiB | 596761.5 B | 1 | - | - | - | 41.2 | fastest comparator; cold first run 16.99 ms |
| generated/pcm/tagged-wav-bext.wav | 0.8 MiB | OneMedia | 83.0 µs | 0.54× | 862.8 KiB | 883545.2 B | 1 | - | - | - | 41.1 | cold first run 18.51 ms |
| generated/pcm/tagged-wav-bext.wav | 0.8 MiB | ATL.NET | 719.9 µs | 4.65× | 1.8 MiB | 1902873.1 B | 1 | - | - | - | 41.1 | cold first run 43.93 ms |
| generated/pcm/tagged-wav-bext.wav | 0.8 MiB | TagLib# | 154.7 µs | 1.00× | 911.1 KiB | 932924.1 B | 1 | - | - | - | 41.2 | fastest comparator; cold first run 16.66 ms |
| generated/pcm/tagged-wav-id3.wav | 0.5 MiB | OneMedia | 58.2 µs | 0.43× | 533.0 KiB | 545768.0 B | 1 | - | - | - | 41.1 | cold first run 18.00 ms |
| generated/pcm/tagged-wav-id3.wav | 0.5 MiB | ATL.NET | 220.2 µs | 1.63× | 1.1 MiB | 1181618.8 B | 1 | - | - | - | 41.0 | cold first run 41.43 ms |
| generated/pcm/tagged-wav-id3.wav | 0.5 MiB | TagLib# | 135.5 µs | 1.00× | 582.8 KiB | 596760.3 B | 1 | - | - | - | 41.0 | fastest comparator; cold first run 16.55 ms |

## tagw-mkv: Matroska: change title, artist, album and comment; the edited file in memory

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/mkv/h264-two-audio-tags.mkv | 0.3 MiB | OneMedia | 59.2 µs | 1.09× | 378.4 KiB | 387448.0 B | 1 | - | - | - | 41.2 | cold first run 39.10 ms |
| generated/mkv/h264-two-audio-tags.mkv | 0.3 MiB | ATL.NET | fail | - | - | - | - | - | - | - | 41.1 | NullReferenceException: Object reference not set to an instance of an object. |
| generated/mkv/h264-two-audio-tags.mkv | 0.3 MiB | TagLib# | 54.3 µs | 1.00× | 323.1 KiB | 330841.6 B | 1 | - | - | - | 41.2 | cold first run 9.70 ms |
| matroska-test-files/test1.mkv | 22.3 MiB | OneMedia | 1.63 ms | - | 22.4 MiB | 23454785.1 B | 1 | - | - | - | 41.1 | cold first run 45.45 ms |
| matroska-test-files/test1.mkv | 22.3 MiB | ATL.NET | fail | - | - | - | - | - | - | - | 41.1 | NullReferenceException: Object reference not set to an instance of an object. |
| matroska-test-files/test1.mkv | 22.3 MiB | TagLib# | fail | - | - | - | - | - | - | - | 41.1 | InvalidOperationException: Invalid EBML format Read |

# Group C: remux-mem, playable

## Run 2026-11-02 04:42Z

- Machine: Apple M2; 8 logical cores; macOS 27.0.1 Arm64
- ISA: neon crc32 aes dotprod
- Storage of the corpus: /dev/disk3s5; every file is read once before its rows, so it is in the page cache for all of them
- .NET: 10.0.11 (.NET 10.0.11)
- Load average (1 min): before 2.78; during mean 1.84, max 2.78 over 74 samples at 5 s; after 1.66
- Elapsed: 6.2 min; repetitions 3 (managed), 3 (tools); files over 1 GiB get one warm-up run and 3 samples of one run each, and tools once
- Packages as restored: SharpMP4 0.3.2; RecursiveAI.OneAudio 1.6.1; MetadataExtractor 2.9.3; TagLibSharp 2.3.0.0; z440.atl.core 7.19; Matroska 0.0.12
- Tools: ffmpeg version 8.0 Copyright (c) 2000-2025 the FFmpeg developers; MP4Box - GPAC version 26.07-revrelease; mkvmerge v103.0 ('The Darkness') 64-bit; MediaInfo MediaInfo Command line,; ExifTool 13.60

Ratio is OneMedia's median over the fastest managed comparator's median on the same file (below 1.00× is faster). Peak is the process's peak resident set; Baseline is its resident set before any work, so Peak − Baseline is what the work added.

## remux-mem: Remux of the files past 4 GiB into MP4 and Matroska, output to disk: peak resident memory

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/large/over4gb-moov-at-end.mp4 | 4.08 GiB | OneMedia to MP4 | 26.55 s | - | 2.1 MiB | 34.8 B | 64576 | 4177.0 | - | - | 41.2 | cold first run 26.64 s |
| generated/large/over4gb-moov-at-end.mp4 | 4.08 GiB | OneMedia to Matroska | 9.80 s | - | 21.3 MiB | 345.3 B | 64576 | 4176.7 | - | - | 41.1 | cold first run 9.28 s |
| generated/large/over4gb.mkv | 4.14 GiB | OneMedia to MP4 | 27.21 s | - | 5.7 MiB | 92.9 B | 64596 | 4244.5 | - | - | 41.1 | cold first run 33.14 s |
| generated/large/over4gb.mkv | 4.14 GiB | OneMedia to Matroska | 19.85 s | - | 24.6 MiB | 399.8 B | 64596 | 4244.0 | - | - | 41.2 | cold first run 18.60 s |

Reference tools, run as processes (wall time including start-up, peak resident set); information only:

| File | Tool | Wall median | Wall min – max | Peak MiB | Note |
|---|---|---:|---:|---:|---|
| generated/large/over4gb-moov-at-end.mp4 | ffmpeg -c copy -f matroska | 5.23 s | 5.23 s – 5.23 s | 99.7 |  |
| generated/large/over4gb.mkv | ffmpeg -c copy -f matroska | 5.20 s | 5.20 s – 5.20 s | 40.7 |  |

## playable: MakePlayable (generic MP4): Matroska H.264+AAC to MP4; information

| File | Size | Implementation | Median | Ratio | Alloc / run | Alloc / packet | Packets | Payload MiB | Tracks or tags | Peak MiB | Baseline MiB | Note |
|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
| generated/mkv/h264-aac.mkv | 0.2 MiB | OneMedia | 13.37 ms | - | 1.8 MiB | 1835584.0 B | 1 | 0.2 | - | - | 41.3 | cold first run 135.81 ms |

Reference tools, run as processes (wall time including start-up, peak resident set); information only:

| File | Tool | Wall median | Wall min – max | Peak MiB | Note |
|---|---|---:|---:|---:|---|
| generated/mkv/h264-aac.mkv | ffmpeg -c copy -f mp4 | 31.12 ms | 30.67 ms – 43.16 ms | 18.2 |  |
