| item | iPhone run 1 (fresh install, cold) | iPhone run 2 (relaunch, warm) | Mac A1 Release (cold for this app) | Mac A2 Release (warm) | ||
|---|---|---|---|---|---|---|
| run / status / pass | 20260927-030040 / done / True | 20260927-030429 / done / True | mac-20260927-025503 / done / True | mac-20260927-025652 / done / True | ||
| device | iPhone19,2 V63AP, iOS 27.0.0 (24A437), arch h19p | iPhone19,2 V63AP, iOS 27.0.0 (24A437), arch h19p | arm64 Mac16,9, macOS 27.0.0 (26A428), arch h16c | arm64 Mac16,9, macOS 27.0.0 (26A428), arch h16c | ||
| build | Release, testable True | Release, testable True | Release, testable True | Release, testable True | ||
| GPU lock (Mac) | - | - | taken by this run (flock; file 0 bytes, last written 2026-09-27 02:52:26; GPU utilization [56, 0, 0, 0, 0]) | taken by this run (flock; file 0 bytes, last written 2026-09-27 02:56:52; GPU utilization [98, 0, 0, 0, 0]) | ||
| assets: files / missing / md5 differ | 325 / 0 / 0 | 325 / 0 / 0 | 325 / 0 / 0 | 325 / 0 / 0 | ||
| load1 encoder alone (s) | 2.46 | 0.10 | 2.30 | 0.11 | ||
| load1 model = decoder + cached encoder (s) | 2.82 | 0.90 | 1.44 | 0.55 | ||
| load1 encoder warm (s) | 0.14 | 0.15 | 0.11 | 0.12 | ||
| load1 decoder ≈ model − encoder warm (s) | 2.67 | 0.75 | 1.33 | 0.43 | ||
| load1 encoder + decoder ≈ (s) | 5.14 | 0.85 | 3.62 | 0.54 | ||
| Core AI cache before → after load1 (MB) | 0 → 1564 | 1564 → 1564 | 0 → 1564 | 1564 → 1564 | ||
| warmup first transcription (ms, clip) | 2256 (zh, exact) | 552 (zh, exact) | 221 (zh, exact) | 216 (zh, exact) | ||
| load2 model, same process (s) | 0.44 | 0.44 | 0.55 | 0.56 | ||
| e2e clips done / errors | 155 / 0 | 155 / 0 | 155 / 0 | 155 / 0 | ||
| oracle exact | 150 | 150 | 150 | 150 | ||
| knife-edge (< 0.1) | 5 | 5 | 5 | 5 | ||
| exact or knife-edge | 155 | 155 | 155 | 155 | ||
| mismatch ≥ 0.1 | 0 | 0 | 0 | 0 | ||
| ids == Python engine | 155 | 155 | 155 | 155 | ||
| ids == Mac Swift (r3) | 155 | 155 | 155 | 155 | ||
| text == oracle / Python / Mac Swift | 150 / 155 / 155 | 150 / 155 / 155 | 150 / 155 / 155 | 150 / 155 / 155 | ||
| cap (512) | 0 | 0 | 0 | 0 | ||
| front end max | Δ | vs NumPy (clip) | 4.93e-04 (ja_jp_1670) | 4.93e-04 (ja_jp_1670) | 4.93e-04 (ja_jp_1670) | 4.93e-04 (ja_jp_1670) |
| e2e audio / transcription wall (s) | 1836 / 132.1 | 1836 / 141.7 | 1836 / 39.5 | 1836 / 39.2 | ||
| e2e RTF median / p90 | 0.0745 / 0.0937 | 0.0807 / 0.0994 | 0.0221 / 0.0280 | 0.0220 / 0.0280 | ||
| e2e RTF worst (clip) | 0.1370 (ko) | 0.1350 (ko) | 0.0434 (ko) | 0.0435 (ko) | ||
| e2e RTF median, clips started in the first 20 s / after | 0.0780 (28) / 0.0745 | 0.0781 (28) / 0.0811 | 0.0234 (82) / 0.0215 | 0.0234 (83) / 0.0214 | ||
| e2e median front end / encoder / prefill (ms) | 2.2 / 146.1 / 392.8 | 2.4 / 225.1 / 417.2 | 1.4 / 40.2 / 123.7 | 1.3 / 40.2 / 122.6 | ||
| e2e median decode (ms/token) | 8.17 | 9.41 | 2.79 | 2.77 | ||
| bench clip, runs, wait for nominal | ja_jp_1719, 5 after 1 warm-up, waited 46 s (fair → nominal) | ja_jp_1719, 5 after 1 warm-up, waited 302 s (serious → serious) | ja_jp_1719, 5 after 1 warm-up, waited 0 s (nominal → nominal) | ja_jp_1719, 5 after 1 warm-up, waited 0 s (nominal → nominal) | ||
| bench RTF median / p90 | 0.0665 / 0.0667 | 0.0667 / 0.0676 | 0.0218 / 0.0218 | 0.0216 / 0.0216 | ||
| bench wall median (ms) | 906.3 | 908.8 | 296.5 | 294.0 | ||
| bench encoder / prefill (ms), decode (ms/token) | 150.5 / 415.6, 8.18 | 151.0 / 416.0, 8.16 | 42.0 / 136.9, 2.80 | 42.0 / 135.6, 2.77 | ||
| bench timed runs end at (s) | 5.5 | 5.5 | 1.8 | 1.8 | ||
| bench thermal start → end | nominal → nominal | serious → fair | nominal → nominal | nominal → nominal | ||
| peak footprint over the run (MB) | 385 | 411 | 727 | 737 | ||
| least available memory (MB) | 3157 | 3133 | - | - | ||
| e2e thermal start / ~20 s / end | nominal (0 s) / nominal (20 s) / fair (134 s) | nominal (0 s) / nominal (20 s) / serious (143 s) | nominal (0 s) / nominal (20 s) / nominal (40 s) | nominal (0 s) / nominal (20 s) / nominal (40 s) | ||
| thermal at launch → end of run | nominal → nominal | nominal → fair | nominal → nominal | nominal → nominal | ||
| battery at launch | 80 % charging | 80 % charging | -100 % unknown | -100 % unknown | ||
| elapsed (s) | 197 | 456 | 50 | 47 |
A1 testable -> B1 public:
paired clips 155: wall B/A median 0.9933, mean 0.9934, min 0.9759, max 1.0075; sum B / sum A 0.9932; text equal 155/155
bench wall median A 296.483584 ms, B 293.42775000000006 ms
A2 testable -> B1 public:
paired clips 155: wall B/A median 0.9995, mean 0.9993, min 0.9813, max 1.0156; sum B / sum A 0.9992; text equal 155/155
bench wall median A 294.004166 ms, B 293.42775000000006 ms
A2 testable -> B2 public:
paired clips 155: wall B/A median 0.9992, mean 0.9993, min 0.9861, max 1.0112; sum B / sum A 0.9994; text equal 155/155
bench wall median A 294.004166 ms, B 294.58641600000004 ms
A1 testable -> A2 testable (run to run):
paired clips 155: wall B/A median 0.9939, mean 0.9941, min 0.9843, max 1.0100; sum B / sum A 0.9940; text equal 155/155
bench wall median A 296.483584 ms, B 294.004166 ms
B1 public -> B2 public (run to run):
paired clips 155: wall B/A median 1.0002, mean 1.0001, min 0.9872, max 1.0137; sum B / sum A 1.0002; text equal 155/155
bench wall median A 293.42775000000006 ms, B 294.58641600000004 ms
mac-20260927-025503: app priority min 31 (31 = foreground user process; App Nap = 4), demoted samples 0 , load avg start/end 17.7/28.2
mac-20260927-025557-public: app priority min 31 (31 = foreground user process; App Nap = 4), demoted samples 0 , load avg start/end 28.2/15.8
mac-20260927-025652: app priority min 31 (31 = foreground user process; App Nap = 4), demoted samples 0 , load avg start/end 15.8/11.3
mac-20260927-025747-public: app priority min 31 (31 = foreground user process; App Nap = 4), demoted samples 0 , load avg start/end 11.3/7.9
iPhone run 1 vs Mac A2 per clip: waveform md5 equal 155/155, Swift front-end features md5 equal 155/155, generated ids equal 155/155; iPhone run 1 vs run 2 ids equal 155/155
iPhone run 1 thermal every 20 s: [(0, 'nominal'), (20, 'nominal'), (40, 'nominal'), (60, 'nominal'), (80, 'nominal'), (100, 'fair'), (120, 'fair'), (134, 'fair')]
e2e 0- 20 s: 28 clips, wall iPhone/Mac x3.13, encoder 146 ms, decode 8.16 ms/token (medians)
e2e 20- 40 s: 26 clips, wall iPhone/Mac x3.12, encoder 146 ms, decode 8.17 ms/token (medians)
e2e 40- 60 s: 26 clips, wall iPhone/Mac x3.12, encoder 146 ms, decode 8.16 ms/token (medians)
e2e 60- 80 s: 27 clips, wall iPhone/Mac x3.10, encoder 146 ms, decode 8.14 ms/token (medians)
e2e 80-100 s: 19 clips, wall iPhone/Mac x3.62, encoder 227 ms, decode 8.81 ms/token (medians)
e2e 100-120 s: 19 clips, wall iPhone/Mac x3.93, encoder 231 ms, decode 10.04 ms/token (medians)
e2e 120-140 s: 10 clips, wall iPhone/Mac x4.08, encoder 232 ms, decode 10.75 ms/token (medians)
iPhone run 2 thermal every 20 s: [(0, 'nominal'), (20, 'nominal'), (40, 'fair'), (60, 'serious'), (80, 'serious'), (100, 'serious'), (120, 'serious'), (140, 'serious'), (143, 'serious')]
e2e 0- 20 s: 28 clips, wall iPhone/Mac x3.13, encoder 147 ms, decode 8.17 ms/token (medians)
e2e 20- 40 s: 26 clips, wall iPhone/Mac x3.14, encoder 147 ms, decode 8.16 ms/token (medians)
e2e 40- 60 s: 24 clips, wall iPhone/Mac x3.16, encoder 148 ms, decode 8.23 ms/token (medians)
e2e 60- 80 s: 22 clips, wall iPhone/Mac x3.94, encoder 233 ms, decode 9.87 ms/token (medians)
e2e 80-100 s: 18 clips, wall iPhone/Mac x3.92, encoder 234 ms, decode 9.94 ms/token (medians)
e2e 100-120 s: 18 clips, wall iPhone/Mac x3.94, encoder 234 ms, decode 10.11 ms/token (medians)
e2e 120-140 s: 17 clips, wall iPhone/Mac x4.06, encoder 234 ms, decode 10.49 ms/token (medians)
e2e 140-160 s: 2 clips, wall iPhone/Mac x4.23, encoder 236 ms, decode 11.17 ms/token (medians)