实测:本机 MCI 只有 5 个驱动、50 条扩展名映射,`type mpeg3audio` 稳定报 263(0.28–0.33 ms 就失败),m4a 按扩展名打开报 277 且要 53.3–86.3 ms;MCI 的 `play` 提交一次花 8.6–29.0 ms,位置推进前 1 秒只有 0.90–0.96 倍实时、之后 0.999–1.001;Media Foundation 首建 SourceReader 30.2 ms(同文件第 2 次 1.2–1.9 ms),60 秒 mp3 解成 PCM 用 107.4 ms=559 倍实时,AAC 只给 4096 字节小缓冲而 MP3 给 86855 字节;XAudio2 建 master voice 26.8–29.7 ms 并一次吃掉 78 个内核句柄,source voice 单价 4.0–5.5 µs、200 个占 1.19 MB,未 Start 的 voice 提交 100 MB 缓冲仍返回 S_OK,但第 59/63 次提交就 `XAUDIO2_E_INVALID_CALL`;winmm 的音量读数是 0xFFFFFFFF / 65535(100%),同一台机器同一时刻 WASAPI 端点读回 −96.00 dB、scalar 0.0000、GetMute=1。
实测:一次系统调用在机器上就是 24 个字节(mov r10,rcx + mov eax,服务号 + syscall);读 gs:[0x40] 拿 PID 只要 1.5 纳秒,而最便宜的陷入是 82.4 纳秒;0x7FFE0000 那 4KB 只读页里 +0x008 每 100 纳秒进 1、+0x320 每 15.57 毫秒进 1,这就是 Sleep(1) 实测中位 15.18 毫秒的来源。
实测:同样 120 个矩形,画在窗口 DC 上每个 16.9 微秒,画在内存 DC 上每个 1.3 微秒(13 倍),双缓冲把一帧从 2.110 毫秒压到 0.293 毫秒;SetPixel 每点 581 纳秒而直接写位图内存 1.5 纳秒(398 倍);StretchBlt 缩小 8 倍时 HALFTONE 比 COLORONCOLOR 慢 207 倍;一次提前的 ReleaseDC 让后面所有 GetDeviceCaps 静默返回 0,而 GetLastError 一动不动。
实测:句柄值是 4 字节步进的表索引,关掉再建立刻复用;一个线程的消息队列只能堆 10000 条(第 10001 次 PostMessage 报 1816 配额不足);同线程 SendMessage 56 纳秒,跨线程 27.8 微秒,差 493 倍;USER 与 GDI 各自的配额都是每进程 10000,而 GDI 耗尽时 GetLastError 一动不动。
实测:同一个 .rc 只加一行 `#pragma code_page(65001)`,中文串从 9 个乱码码点变成 6 个正确码点、资源块从 70 字节缩到 64 字节;图标请求 24×24 拿到的是 32×32 源缩放后的像素(色标差 3),只有精确命中的尺寸色差为 0;RT_BITMAP 里存的是 .bmp 去掉 14 字节文件头(242→228、130→116);4MB 自定义资源 LockResource 只花 0.9 微秒且一字节不拷,逐页采样 1024 次才让 WorkingSet 涨 4.0MB;ddores.dll 文件只有 71 600 字节,而 1096 条 RT_ICON 的 SizeofResource 合计 16 303 340 字节——228 倍,且这些数据不在文件里。
实测:CreateThread 单价 22.1 微秒、每个线程恰好 1 个内核句柄、栈一上来就提交 1040KB(再碰 700KB 一点都不加,而请求 8MB 时 8192KB 全提交);无竞争 Enter+Leave 临界区 13.9 纳秒、互斥体 301.5 纳秒(21 倍),两线程交接时临界区 0.12 微秒、互斥体 4.68 微秒(39 倍);UI 线程用 WaitForSingleObject 等事件时,跨线程 SendMessage 被挂 2805 毫秒,换成 MsgWaitForMultipleObjects 只阻塞 0.4 毫秒;MinGW-w64 的 GCC 13.1.0 对 `__declspec(thread)` 报 "'thread' attribute directive ignored" 并静默退化成普通静态变量——两个线程读到同一个地址。