Repository navigation
feat: メモリ使用量を軽量化 - #5
Conversation
- Config.raw_textを削除(パース後未使用、10-50KB削減) - 14個のownership boolをu16 bitmaskに統合(Config構造体縮小) - focused_inactive_*の解放漏れを修正(既存メモリリーク) - GPAからc_allocatorに変更(アロケーション毎の~32Bメタデータ削減) - パース後にArrayListのcapacityをshrinkAndFree - tree_json_bufをIPC応答後に解放(無制限成長を防止) https://claude.ai/code/session_015G9B8RqqDSVpmfyGBnqhpd
-Doptimize=ReleaseSmall時: - strip=true: DWARFデバッグシンボル除去でバイナリ数MB縮小 - single_threaded=true: TLS・mutex除去(WMは単一スレッド) Debugビルドでは従来通り(安全チェック・デバッグ情報維持) https://claude.ai/code/session_015G9B8RqqDSVpmfyGBnqhpd
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughZig ビルドシステムに最適化モード連動の設定を追加し、Config 構造体の所有権フラグを単一ビットマスクに統合し、メモリ管理の明示的な解放とアロケータの変更を実装しました。 Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Code Review
This pull request introduces memory and binary size optimizations, such as stripping debug symbols, switching to c_allocator, and using a bitmask for owned configuration strings. It also adds memory reclamation via shrinkAndFree for several lists and ensures the IPC tree buffer is freed after use. A review comment suggests further optimizing memory by applying shrinkAndFree to the variables and modes HashMaps.
| cfg.keybinds.shrinkAndFree(cfg.keybinds.items.len); | ||
| cfg.window_rules.shrinkAndFree(cfg.window_rules.items.len); | ||
| cfg.assign_rules.shrinkAndFree(cfg.assign_rules.items.len); | ||
| cfg.exec_cmds.shrinkAndFree(cfg.exec_cmds.items.len); | ||
| cfg.exec_always_cmds.shrinkAndFree(cfg.exec_always_cmds.items.len); | ||
| cfg.workspace_outputs.shrinkAndFree(cfg.workspace_outputs.items.len); |
There was a problem hiding this comment.
これらのArrayListと同様に、variablesとmodesのHashMapに対してもshrinkAndFreeを呼び出すことで、さらにメモリ使用量を削減できる可能性があります。特に、設定ファイルによってはvariablesが多くなることも考えられるため、この最適化は有効だと思われます。
cfg.keybinds.shrinkAndFree(cfg.keybinds.items.len);
cfg.window_rules.shrinkAndFree(cfg.window_rules.items.len);
cfg.assign_rules.shrinkAndFree(cfg.assign_rules.items.len);
cfg.exec_cmds.shrinkAndFree(cfg.exec_cmds.items.len);
cfg.exec_always_cmds.shrinkAndFree(cfg.exec_always_cmds.items.len);
cfg.workspace_outputs.shrinkAndFree(cfg.workspace_outputs.items.len);
cfg.variables.shrinkAndFree(cfg.variables.count());
cfg.modes.shrinkAndFree(cfg.modes.count());
https://claude.ai/code/session_015G9B8RqqDSVpmfyGBnqhpd
Summary by CodeRabbit
リリースノート
バグ修正
パフォーマンス