ElyMark: a new file takes typing in visual; modes change no byte; PERF-07 timed (C14.6)

The component library opens an empty visual document's end on focus.
The view logs once when its mode first takes input; 1 MB opens to
visual in 341 ms P50 on Windows.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-12 04:00:00 -04:00
1 parent b7bd95c3ab
commit 5f5a9bbf97
9 files changed
+113 -10

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
# Benchmark 2026-10-12
Format: docs/perf/README.md. PERF-07 only, native ElyMark (C14.6), on Windows: `bench.py` reads macOS paths, so the same mark was timed by hand (spawn to `mark: shown as "visual"`, a fresh data folder each run). The sample is `samples.markdown` written on Windows, with CRLF line ends.
```json
{
"date": "2026-10-12",
"machine": "ASUS System Product Name",
"cpu": "AMD Ryzen 9 9950X3D 16-Core Processor",
"cores": "16",
"memory_gb": 94,
"gpu": "AMD Radeon(TM) Graphics, NVIDIA GeForce RTX 4090, GameViewer Virtual Display Adapter",
"system": "Windows 11 Pro for Workstations 10.0.26300",
"fonts": 697,
"builds": {
"ely-mark": "f3901ba5aa5ea970"
},
"samples": {
"notes.md": "28e15bd4ecd655e20f01f7eb93fe84a5f60cf7bb298e3744756d670db762d95c"
}
}
```
| PERF | Case | Runs | P50 ms | P95 ms | Target ms | Total memory MB |
| --- | --- | --- | --- | --- | --- | --- |
| PERF-07 | ElyMark notes.md (1,063,417 bytes) | 10 | 341 | 560 ✓ | 2000 | |
+1 -1
View File
@@ -12,6 +12,6 @@
| repo | 10 万个提交 | PERF-06 |
| notes.md | 1 MB | PERF-07 |
计时从启动进程起,到日志里出现标记为止(脚本每 10 毫秒读一次日志):PERF-01 到首帧(`ELY_SMOKE=1` 打印 `ready`),首次运行(新的用户目录)与日常启动分记,每次等上一次的进程(含仍在启动的内核)退出后再测;Doc、Table、Show 另记空白文档就绪(`opened Untitled`),它要等内核启动;PERF-03、04 到第一块图块真正画到窗口上(`lok: first tile drawn`,在 `paint_image` 成功之后记;其间内核画图块失败或窗口画图块失败即整次作废),PERF-03 之前先核对样本经内核排版恰为 100 页(`lok: 100 pages`);PERF-05 到第一页的第一块画到窗口上(`pdf: first tile drawn, page 0`;画失败即整次作废);PERF-06 的历史首屏从按下“历史”到显示(`history shows`),查询从按下回车到结果(`searched true`),性能要求的指标是后者;PERF-07 到可视编辑器显示(`mark: shown as "visual"`;原生实现的这条日志随 C14.6 接上,之前此项测不出)。PERF-02 为 ElyDoc 每次按键到显示该编辑的图块(`lok: edit to tile`,每键须各有一条,缺即失败),并以 `ELY_STALLS=1` 记下主线程连续忙于 100 毫秒以上的次数(`main thread was busy`)。内存为应用及其全部子进程(内核 worker)的 RSS 之和。PERF-08 为 ElyDoc 新建再关闭文档 40 次:循环前记下基线(总内存、全部句柄的类型与名称、内核中的文档数 `lok-worker: N documents open`),每次关闭后等内核回到基线文档数(等不到或没有这条日志即失败),再按身份比对句柄:比基线多出的只许是 `/System/Library/` 下的只读系统资源(第一次打开模板对话框时一次性载入两个系统字体与 AppKit 的两个本地化表),且此后每次都相同;多出任何别的句柄即失败。记录写基线与每次的内存、句柄数、文档数。
计时从启动进程起,到日志里出现标记为止(脚本每 10 毫秒读一次日志):PERF-01 到首帧(`ELY_SMOKE=1` 打印 `ready`),首次运行(新的用户目录)与日常启动分记,每次等上一次的进程(含仍在启动的内核)退出后再测;Doc、Table、Show 另记空白文档就绪(`opened Untitled`),它要等内核启动;PERF-03、04 到第一块图块真正画到窗口上(`lok: first tile drawn`,在 `paint_image` 成功之后记;其间内核画图块失败或窗口画图块失败即整次作废),PERF-03 之前先核对样本经内核排版恰为 100 页(`lok: 100 pages`);PERF-05 到第一页的第一块画到窗口上(`pdf: first tile drawn, page 0`;画失败即整次作废);PERF-06 的历史首屏从按下“历史”到显示(`history shows`),查询从按下回车到结果(`searched true`),性能要求的指标是后者;PERF-07 到可视模式可以键入(`mark: shown as "visual"`:文档的块读完,按下即可编辑)。PERF-02 为 ElyDoc 每次按键到显示该编辑的图块(`lok: edit to tile`,每键须各有一条,缺即失败),并以 `ELY_STALLS=1` 记下主线程连续忙于 100 毫秒以上的次数(`main thread was busy`)。内存为应用及其全部子进程(内核 worker)的 RSS 之和。PERF-08 为 ElyDoc 新建再关闭文档 40 次:循环前记下基线(总内存、全部句柄的类型与名称、内核中的文档数 `lok-worker: N documents open`),每次关闭后等内核回到基线文档数(等不到或没有这条日志即失败),再按身份比对句柄:比基线多出的只许是 `/System/Library/` 下的只读系统资源(第一次打开模板对话框时一次性载入两个系统字体与 AppKit 的两个本地化表),且此后每次都相同;多出任何别的句柄即失败。记录写基线与每次的内存、句柄数、文档数。
记录开头的 JSON 写机型、CPU、核数、内存、GPU、系统、系统字体文件数、各应用发行二进制的散列与样本散列。冷启动未清系统文件缓存(需要管理员权限),“日常启动”即文件缓存已热时的启动。