Skip to content

perf: EqualsIDInjectionResolver に per-spec ID マップキャッシュを追加#138

Closed
mitonize wants to merge 3 commits into
develop-2.0from
perf/equals-id-injection-cache
Closed

perf: EqualsIDInjectionResolver に per-spec ID マップキャッシュを追加#138
mitonize wants to merge 3 commits into
develop-2.0from
perf/equals-id-injection-cache

Conversation

@mitonize

@mitonize mitonize commented May 20, 2026

Copy link
Copy Markdown
Collaborator
  • EqualsIDInjectionResolver: spec インスタンスへの _idNodeMap キャッシュ導入

    • 毎リクエストごとの id→node マップ再構築をなくし複数スレッドで共用
    • spec ごとの個別マップ(template/page/default 各々が自身の .mayaa のみを索引化)
    • getNode() で階層を上向きに辿り、具体的な spec を優先
    • deprecate() でマップをクリア → 次回ビルドで再構築
  • SpecificationImpl: isDeprecated() の存在チェックを 500ms 間隔に throttle

    • getExistsCheckIntervalMillis() で設定値をインスタンスフィールドに遅延キャッシュ
  • warnInvalidIdNodes(): 重複 id チェックを afterBuild 時の1回のみに変更

    • DiagnosticEventBuffer.recordWarn を使用(他の警告と同じスタイル)
    • collectIdNodesForSpec() での都度チェックを廃止

ベンチマーク結果 (BuildPerformanceTest、2000 iters):
large_id 200ID (template-only): idMap あり vs なし = -38%
multiparent 200ID (template-only): idMap あり vs なし = -36%


⚠️ 注意: このPRは GitHub の Merge ボタンではなく手動マージにより develop-2.0 に取り込まれました。
取り込みコミット: 52a675ce, ac89db5e
詳細はコメント参照。

@mitonize mitonize left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コンフリクト解消時に BuildPerformanceTest のJavadocコメントの閉じの不整合が混入している。

@mitonize

mitonize commented May 20, 2026

Copy link
Copy Markdown
Collaborator Author

別PRとのコンフリクト解消の過程で不整合があり、本来の変更が不明瞭になったためこのPRは破棄。
元のブランチのpush前にコンフリクト解消させてから改めてPR作成する。

@mitonize mitonize closed this May 20, 2026
@mitonize mitonize deleted the perf/equals-id-injection-cache branch May 20, 2026 04:19
@mitonize

Copy link
Copy Markdown
Collaborator Author

このPRの内容について

このPRはGitHub の Merge ボタンではなく、手動マージ(git push)によって develop-2.0 に取り込まれました。
そのため GitHub 上では「Closed (not merged)」と表示されていますが、内容は develop-2.0 に含まれています

取り込まれたコミット

コミット 内容
52a675ce perf/xpath-pattern-cache(PR #137)とのマージ(このPRの内容を含む)
ac89db5e コンフリクト解消時の誤り修正(deprecate()_xpathInjectNodes をクリアするよう修正)

経緯

PR #137 (perf/xpath-pattern-cache) がマージされた後、perf/equals-id-injection-cache ブランチに SpecificationImpl.java のコンフリクトが発生。
ローカルでコンフリクトを解消し develop-2.0 に直接 push したため、このような記録になっています。

@mitonize mitonize added this to the v2.0.0 milestone May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant