WIP: perf: avoid temporary allocations in dictionary key comparisons #1

Draft
codex-bot wants to merge 1 commits from codex/dict-key-study into main
Collaborator

字典线性查找的每次 key_equal 原先复制两边的字符串。现在借用 &str 比较,保留内联文本 / 托管 String 等价、键顺序与身份、对象检查、GC 和只读依赖流程;没有改变函数对象或通用字典存储。

修改:crates/objects/src/store_builtins.rs 的 key_equal / key_text;crates/objects/tests/store.rs 新增空文本、Unicode、混合键替换与删除和引用释放回归。

Apple M4 Pro / macOS 15.6,GUI release 世界 UI 1024×800、2×,3 次预热 + 30 次真实 scene-orbit:事件更新均值 8.456→6.842 ms(约 -19%),P95 8.843→7.226 ms;绘制约 18.6 ms 基本不变。这是无窗口阶段基准,不是原生 FPS 或端到端延迟。

对象层测试、全工作区 Clippy -D warnings / 格式及 GUI 的 186 项回归通过。Aster 全工作区存在 3 个失败:compiler classes 的两个解析测试 expected EOF,以及 core execution 的 managed_coroutine_hard_budget_accumulates_and_error_releases_frames。三项均已用未优化的原始 store_builtins.rs 复现,不是本改动引入;不报告全工作区全绿,因此保持 Draft 供审阅。

GUI 的独立性能研究分支 codex/scene-performance 包含可重复基准与研究记录,并固定到本 PR 的提交 fd247ac。先审阅本 Aster PR,再审阅 GUI 版本引用。剩余相机重复排版、输入排队和 CPU 光栅化未在本 PR 解决。

等待用户手动合并;bot 不合并、不直接推送 main。

字典线性查找的每次 key_equal 原先复制两边的字符串。现在借用 &str 比较,保留内联文本 / 托管 String 等价、键顺序与身份、对象检查、GC 和只读依赖流程;没有改变函数对象或通用字典存储。 修改:crates/objects/src/store_builtins.rs 的 key_equal / key_text;crates/objects/tests/store.rs 新增空文本、Unicode、混合键替换与删除和引用释放回归。 Apple M4 Pro / macOS 15.6,GUI release 世界 UI 1024×800、2×,3 次预热 + 30 次真实 scene-orbit:事件更新均值 8.456→6.842 ms(约 -19%),P95 8.843→7.226 ms;绘制约 18.6 ms 基本不变。这是无窗口阶段基准,不是原生 FPS 或端到端延迟。 对象层测试、全工作区 Clippy -D warnings / 格式及 GUI 的 186 项回归通过。Aster 全工作区存在 3 个失败:compiler classes 的两个解析测试 expected EOF,以及 core execution 的 managed_coroutine_hard_budget_accumulates_and_error_releases_frames。三项均已用未优化的原始 store_builtins.rs 复现,不是本改动引入;不报告全工作区全绿,因此保持 Draft 供审阅。 GUI 的独立性能研究分支 codex/scene-performance 包含可重复基准与研究记录,并固定到本 PR 的提交 fd247ac。先审阅本 Aster PR,再审阅 GUI 版本引用。剩余相机重复排版、输入排队和 CPU 光栅化未在本 PR 解决。 等待用户手动合并;bot 不合并、不直接推送 main。
codex-bot added 1 commit 2026-11-11 07:49:42 +00:00
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin codex/dict-key-study:codex/dict-key-study
git checkout codex/dict-key-study
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Zayden-Jung/endorphin-aster-vm#1