Recursive AI

OneMedia speed rows

All onemedia docs

Run 2026-11-01 00:16Z

  • Host: Mac mini; 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.32; during mean 2.18, max 2.41 over 27 samples at 5 s; after 2.02
  • Elapsed: 2.2 min; repetitions 5 (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.4.0; 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-demux: MP4/MOV: read every packet of every track

FileSizeImplementationMedianRatioAlloc / runAlloc / packetPacketsPayload MiBTracks or tagsPeak MiBBaseline MiBNote
generated/mp4/h264-aac.mp40.2 MiBOneMedia39.6 µs0.02×23.6 KiB78.2 B3090.2--39.9cold first run 17.47 ms
generated/mp4/h264-aac.mp40.2 MiBSharpMP41.68 ms1.00×1.4 MiB4744.3 B3090.2--40.0cold first run 55.09 ms
samples/MPEG-4/video.mp426.6 MiBOneMedia2.40 ms0.13×57.6 KiB3.2 B1867126.5--40.0cold first run 24.10 ms
samples/MPEG-4/video.mp426.6 MiBSharpMP418.11 ms1.00×42.6 MiB2390.8 B1867126.5--39.9cold first run 88.98 ms
blender/big_buck_bunny_1080p_h264.mov691.5 MiBOneMedia53.99 ms0.20×2.1 MiB52.7 B42276691.1--39.9cold first run 81.90 ms
blender/big_buck_bunny_1080p_h264.mov691.5 MiBSharpMP4271.02 ms1.00×801.0 MiB19866.2 B42276691.1--40.0cold first run 779.67 ms
generated/bench/frag-bbb-1080p.mp4691.5 MiBOneMedia53.94 ms-2.1 MiB51.7 B42276691.1--39.9cold first run 94.61 ms
generated/bench/frag-bbb-1080p.mp4691.5 MiBSharpMP4fail-------40.0IndexOutOfRangeException: Index was outside the bounds of the array.

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

FileToolWall medianWall min – maxPeak MiBNote
blender/big_buck_bunny_1080p_h264.movffmpeg -c copy -f null171.54 ms171.30 ms – 181.61 ms45.8
generated/bench/frag-bbb-1080p.mp4ffmpeg -c copy -f null198.48 ms190.23 ms – 199.11 ms58.6
generated/mp4/h264-aac.mp4ffmpeg -c copy -f null27.89 ms27.47 ms – 102.90 ms18.3
samples/MPEG-4/video.mp4ffmpeg -c copy -f null51.35 ms50.31 ms – 53.70 ms17.1

mp4-audio: MP4/MOV: read the audio track's packets

FileSizeImplementationMedianRatioAlloc / runAlloc / packetPacketsPayload MiBTracks or tagsPeak MiBBaseline MiBNote
generated/mp4/h264-aac.mp40.2 MiBOneMedia31.2 µs0.40×23.6 KiB127.8 B1890.0--40.0cold first run 18.15 ms
generated/mp4/h264-aac.mp40.2 MiBOneAudio Mp4PacketSource78.8 µs1.00×71.6 KiB388.2 B1890.0--40.0cold first run 13.41 ms
generated/mp4/h264-aac.mp40.2 MiBOneMedia, length asked of the file each time41.3 µs0.52×23.7 KiB128.3 B1890.0--40.0cold first run 17.51 ms
samples/MPEG-4/video.mp426.6 MiBOneMedia362.1 µs0.61×57.6 KiB8.2 B72001.9--40.0cold first run 53.84 ms
samples/MPEG-4/video.mp426.6 MiBOneAudio Mp4PacketSource595.8 µs1.00×97.6 KiB13.9 B72001.9--40.0cold first run 57.34 ms
samples/MPEG-4/video.mp426.6 MiBOneMedia, length asked of the file each time354.9 µs0.60×57.7 KiB8.2 B72001.9--40.0cold first run 19.56 ms
blender/big_buck_bunny_1080p_h264.mov691.5 MiBOneMedia3.88 ms-62.4 KiB2.3 B2796031.1--40.0cold first run 33.10 ms
blender/big_buck_bunny_1080p_h264.mov691.5 MiBOneAudio Mp4PacketSourcefail-------39.8UnsupportedAudioFormatException: Audio track 0 uses a QuickTime sound description version this library does not read.
blender/big_buck_bunny_1080p_h264.mov691.5 MiBOneMedia, length asked of the file each time3.91 ms-62.5 KiB2.3 B2796031.1--39.9cold first run 28.07 ms
generated/bench/frag-bbb-1080p.mp4691.5 MiBOneMedia4.31 ms-21.6 KiB0.8 B2796031.1--40.0cold first run 34.13 ms
generated/bench/frag-bbb-1080p.mp4691.5 MiBOneAudio Mp4PacketSourcefail-------39.9UnsupportedAudioFormatException: Fragmented MP4 files (mvex boxes) are not supported.
generated/bench/frag-bbb-1080p.mp4691.5 MiBOneMedia, length asked of the file each time4.53 ms-21.7 KiB0.8 B2796031.1--40.0cold first run 34.13 ms

mp4-probe: MP4/MOV: open, track list, duration, tags

FileSizeImplementationMedianRatioAlloc / runAlloc / packetPacketsPayload MiBTracks or tagsPeak MiBBaseline MiBNote
generated/mp4/h264-aac.mp40.2 MiBOneMedia16.0 µs0.28×23.6 KiB---2-40.0cold first run 16.12 ms
generated/mp4/h264-aac.mp40.2 MiBATL.NET100.3 µs1.73×146.6 KiB---0-40.0cold first run 37.90 ms
generated/mp4/h264-aac.mp40.2 MiBMetadataExtractor73.2 µs1.27×77.7 KiB---48-40.0cold first run 14.16 ms
generated/mp4/h264-aac.mp40.2 MiBTagLib#57.8 µs1.00×36.7 KiB---2-40.0fastest comparator; cold first run 11.80 ms
samples/MPEG-4/video.mp426.6 MiBOneMedia23.1 µs0.21×57.6 KiB---6-39.9cold first run 15.05 ms
samples/MPEG-4/video.mp426.6 MiBATL.NET547.3 µs4.98×151.7 KiB---0-40.0cold first run 36.07 ms
samples/MPEG-4/video.mp426.6 MiBMetadataExtractor142.3 µs1.30×91.8 KiB---96-40.0cold first run 10.45 ms
samples/MPEG-4/video.mp426.6 MiBTagLib#109.9 µs1.00×78.2 KiB---2-40.0fastest comparator; cold first run 10.11 ms
blender/big_buck_bunny_1080p_h264.mov691.5 MiBOneMedia36.5 µs0.27×62.4 KiB---3-40.0cold first run 16.61 ms
blender/big_buck_bunny_1080p_h264.mov691.5 MiBATL.NET1.01 ms7.55×229.2 KiB---0-40.0cold first run 40.00 ms
blender/big_buck_bunny_1080p_h264.mov691.5 MiBMetadataExtractor134.4 µs1.00×87.7 KiB---61-40.0fastest comparator; cold first run 11.49 ms
blender/big_buck_bunny_1080p_h264.mov691.5 MiBTagLib#fail-------40.0UnsupportedFormatException: blender/big_buck_bunny_1080p_h264.mov (taglib/mov)
generated/bench/frag-bbb-1080p.mp4691.5 MiBOneMedia15.1 µs0.01×20.9 KiB---3-40.0cold first run 14.94 ms
generated/bench/frag-bbb-1080p.mp4691.5 MiBATL.NET4.65 ms3.84×483.7 KiB---0-39.9cold first run 47.95 ms
generated/bench/frag-bbb-1080p.mp4691.5 MiBMetadataExtractor4.26 ms3.52×183.6 KiB---60-40.0cold first run 19.25 ms
generated/bench/frag-bbb-1080p.mp4691.5 MiBTagLib#1.21 ms1.00×521.2 KiB---2-40.0fastest comparator; cold first run 10.71 ms

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

FileToolWall medianWall min – maxPeak MiBNote
blender/big_buck_bunny_1080p_h264.movExifTool76.99 ms76.74 ms – 77.93 ms27.2
blender/big_buck_bunny_1080p_h264.movMP4Box -info17.13 ms16.63 ms – 21.45 ms9.2
blender/big_buck_bunny_1080p_h264.movMediaInfo26.29 ms26.25 ms – 31.26 ms14.6
blender/big_buck_bunny_1080p_h264.movffprobe -show_format -show_streams27.07 ms26.94 ms – 29.07 ms26.0
generated/bench/frag-bbb-1080p.mp4ExifTool158.79 ms158.42 ms – 160.27 ms27.4
generated/bench/frag-bbb-1080p.mp4MP4Box -info19.15 ms18.83 ms – 22.34 ms11.6
generated/bench/frag-bbb-1080p.mp4MediaInfo41.34 ms41.26 ms – 46.29 ms14.4
generated/bench/frag-bbb-1080p.mp4ffprobe -show_format -show_streams52.89 ms52.88 ms – 58.02 ms40.4
generated/mp4/h264-aac.mp4ExifTool73.28 ms71.87 ms – 86.89 ms25.7
generated/mp4/h264-aac.mp4MP4Box -info16.23 ms15.98 ms – 32.58 ms8.6
generated/mp4/h264-aac.mp4MediaInfo19.17 ms19.06 ms – 34.76 ms11.0
generated/mp4/h264-aac.mp4ffprobe -show_format -show_streams24.83 ms24.55 ms – 85.62 ms18.0
samples/MPEG-4/video.mp4ExifTool111.30 ms106.67 ms – 118.17 ms40.0
samples/MPEG-4/video.mp4MP4Box -info16.81 ms16.65 ms – 19.07 ms8.6
samples/MPEG-4/video.mp4MediaInfo20.92 ms20.09 ms – 21.28 ms11.5
samples/MPEG-4/video.mp4ffprobe -show_format -show_streams25.16 ms25.07 ms – 31.24 ms16.8

mkv-demux: Matroska/WebM: read every packet

FileSizeImplementationMedianRatioAlloc / runAlloc / packetPacketsPayload MiBTracks or tagsPeak MiBBaseline MiBNote
generated/mkv/h264-aac.mkv0.2 MiBOneMedia86.8 µs0.21×1.0 MiB3513.4 B3090.2--40.0cold first run 19.41 ms
generated/mkv/h264-aac.mkv0.2 MiBOneMedia, length asked of the file each time197.3 µs0.48×1.0 MiB3513.7 B3090.2--39.9cold first run 19.39 ms
generated/mkv/h264-aac.mkv0.2 MiBStefH Matroska411.1 µs1.00×672.2 KiB2227.5 B3090.2--40.0cold first run 17.27 ms
matroska-test-files/test1.mkv22.3 MiBOneMedia2.13 ms0.20×1.0 MiB189.4 B573522.2--39.9cold first run 25.59 ms
matroska-test-files/test1.mkv22.3 MiBOneMedia, length asked of the file each time2.98 ms0.28×1.0 MiB189.4 B573522.2--40.0cold first run 25.77 ms
matroska-test-files/test1.mkv22.3 MiBStefH Matroska10.46 ms1.00×46.0 MiB18698.1 B258222.2--39.9packet count differs from OneMedia's 5735; cold first run 25.52 ms
matroska-test-files/test5.mkv30.3 MiBOneMedia2.58 ms0.20×1.0 MiB254.5 B429830.3--39.8cold first run 24.02 ms
matroska-test-files/test5.mkv30.3 MiBOneMedia, length asked of the file each time3.10 ms0.25×1.0 MiB254.5 B429830.3--40.0cold first run 27.48 ms
matroska-test-files/test5.mkv30.3 MiBStefH Matroska12.62 ms1.00×61.6 MiB41197.8 B156830.3--40.0packet count differs from OneMedia's 4298; cold first run 26.69 ms
blender/Sintel.2010.1080p.mkv1.10 GiBOneMedia132.06 ms0.41×1.0 MiB22.2 B493231125.2--40.0cold first run 142.56 ms
blender/Sintel.2010.1080p.mkv1.10 GiBOneMedia, length asked of the file each time140.40 ms0.44×1.0 MiB22.2 B493231125.2--40.0cold first run 155.42 ms
blender/Sintel.2010.1080p.mkv1.10 GiBStefH Matroska318.36 ms1.00×2265.6 MiB93606.8 B253791125.2--40.0packet count differs from OneMedia's 49323; cold first run 2.03 s
blender/tears_of_steel_1080p.webm544.9 MiBOneMedia49.40 ms0.29×1.0 MiB13.7 B80000544.6--40.0cold first run 111.38 ms
blender/tears_of_steel_1080p.webm544.9 MiBOneMedia, length asked of the file each time60.19 ms0.35×1.0 MiB13.7 B80000544.6--39.9cold first run 106.66 ms
blender/tears_of_steel_1080p.webm544.9 MiBStefH Matroska171.47 ms1.00×1097.5 MiB44895.5 B25634544.7--40.0packet count differs from OneMedia's 80000; cold first run 255.32 ms

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

FileToolWall medianWall min – maxPeak MiBNote
blender/Sintel.2010.1080p.mkvffmpeg -c copy -f null544.24 ms544.24 ms – 544.24 ms34.4
blender/Sintel.2010.1080p.mkvmkvextract tracks (first track)210.74 ms210.74 ms – 210.74 ms26.9
blender/tears_of_steel_1080p.webmffmpeg -c copy -f null193.79 ms192.65 ms – 228.55 ms19.3
blender/tears_of_steel_1080p.webmmkvextract tracks (first track)118.15 ms117.91 ms – 130.19 ms29.5
generated/mkv/h264-aac.mkvffmpeg -c copy -f null25.29 ms24.36 ms – 68.96 ms18.0
generated/mkv/h264-aac.mkvmkvextract tracks (first track)40.30 ms39.79 ms – 91.29 ms15.5
matroska-test-files/test1.mkvffmpeg -c copy -f null35.57 ms35.54 ms – 38.49 ms15.6
matroska-test-files/test1.mkvmkvextract tracks (first track)45.96 ms45.83 ms – 46.13 ms24.4
matroska-test-files/test5.mkvffmpeg -c copy -f null49.96 ms49.79 ms – 53.56 ms25.8
matroska-test-files/test5.mkvmkvextract tracks (first track)47.09 ms47.09 ms – 50.03 ms24.1

mkv-probe: Matroska/WebM: open, track list, duration

FileSizeImplementationMedianRatioAlloc / runAlloc / packetPacketsPayload MiBTracks or tagsPeak MiBBaseline MiBNote
generated/mkv/h264-aac.mkv0.2 MiBOneMedia12.9 µs0.62×36.1 KiB---2-39.9cold first run 11.99 ms
generated/mkv/h264-aac.mkv0.2 MiBNEbml element reader20.6 µs1.00×68.7 KiB---2-40.0cold first run 2.82 ms
matroska-test-files/test1.mkv22.3 MiBOneMedia12.3 µs0.64×36.5 KiB---2-40.0cold first run 12.55 ms
matroska-test-files/test1.mkv22.3 MiBNEbml element reader19.4 µs1.00×68.3 KiB---2-39.9cold first run 2.78 ms
matroska-test-files/test5.mkv30.3 MiBOneMedia16.8 µs0.53×44.0 KiB---11-40.0cold first run 12.70 ms
matroska-test-files/test5.mkv30.3 MiBNEbml element reader31.7 µs1.00×72.8 KiB---11-40.0cold first run 2.93 ms
blender/Sintel.2010.1080p.mkv1.10 GiBOneMedia16.0 µs0.48×44.7 KiB---12-40.0cold first run 12.10 ms
blender/Sintel.2010.1080p.mkv1.10 GiBNEbml element reader33.2 µs1.00×73.3 KiB---12-39.9cold first run 2.57 ms
blender/tears_of_steel_1080p.webm544.9 MiBOneMedia14.4 µs0.76×43.9 KiB---2-40.0cold first run 12.00 ms
blender/tears_of_steel_1080p.webm544.9 MiBNEbml element reader19.1 µs1.00×68.2 KiB---2-40.0cold first run 2.54 ms

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

FileToolWall medianWall min – maxPeak MiBNote
blender/Sintel.2010.1080p.mkvExifTool64.67 ms64.67 ms – 64.67 ms21.1
blender/Sintel.2010.1080p.mkvMediaInfo165.47 ms165.47 ms – 165.47 ms12.3
blender/Sintel.2010.1080p.mkvffprobe -show_format -show_streams28.24 ms28.24 ms – 28.24 ms20.8
blender/Sintel.2010.1080p.mkvmkvinfo40.73 ms40.73 ms – 40.73 ms14.7
blender/Sintel.2010.1080p.mkvmkvmerge -J43.50 ms43.50 ms – 43.50 ms20.0
blender/tears_of_steel_1080p.webmExifTool60.80 ms59.89 ms – 61.23 ms21.2
blender/tears_of_steel_1080p.webmMediaInfo47.45 ms47.40 ms – 50.59 ms11.6
blender/tears_of_steel_1080p.webmffprobe -show_format -show_streams24.40 ms24.17 ms – 27.92 ms14.8
blender/tears_of_steel_1080p.webmmkvinfo39.60 ms39.04 ms – 39.66 ms14.6
blender/tears_of_steel_1080p.webmmkvmerge -J41.31 ms41.28 ms – 43.38 ms19.0
generated/mkv/h264-aac.mkvExifTool61.09 ms60.86 ms – 85.20 ms21.3
generated/mkv/h264-aac.mkvMediaInfo17.86 ms17.67 ms – 33.79 ms10.5
generated/mkv/h264-aac.mkvffprobe -show_format -show_streams25.18 ms24.11 ms – 69.71 ms17.8
generated/mkv/h264-aac.mkvmkvinfo40.31 ms39.44 ms – 133.52 ms14.6
generated/mkv/h264-aac.mkvmkvmerge -J40.25 ms40.06 ms – 61.57 ms16.7
matroska-test-files/test1.mkvExifTool60.60 ms59.94 ms – 60.73 ms21.3
matroska-test-files/test1.mkvMediaInfo19.78 ms19.26 ms – 42.38 ms10.9
matroska-test-files/test1.mkvffprobe -show_format -show_streams24.31 ms24.22 ms – 27.92 ms15.0
matroska-test-files/test1.mkvmkvinfo43.41 ms43.34 ms – 43.85 ms14.9
matroska-test-files/test1.mkvmkvmerge -J44.42 ms42.15 ms – 45.14 ms20.1
matroska-test-files/test5.mkvExifTool93.33 ms93.17 ms – 95.16 ms36.6
matroska-test-files/test5.mkvMediaInfo34.18 ms34.02 ms – 118.83 ms11.4
matroska-test-files/test5.mkvffprobe -show_format -show_streams38.85 ms38.65 ms – 41.45 ms24.5
matroska-test-files/test5.mkvmkvinfo42.51 ms41.88 ms – 43.24 ms16.2
matroska-test-files/test5.mkvmkvmerge -J44.94 ms44.30 ms – 45.91 ms23.1

Against the bar

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

RowFiles with a ratioGeomeanWorstVerdict
mp4-demux3/40.09×0.20×at the bar
mp4-audio2/40.49×0.61×at the bar
mp4-probe4/40.12×0.28×at the bar
mkv-demux5/50.25×0.41×at the bar
mkv-probe5/50.60×0.76×at the bar