Repository navigation
perf: 레이아웃 캐시가 화면에 있는 것만 쥔다 (8,000문단 270→39 MB) - #58
Merged
Merged
Conversation
측정·페이지 나눔·지나가기만 하는 워크는 높이 캐시(약참조)를 읽고, 렌더는 그리는 문단만 셰이핑하며, 렌더 뒤 최근 사용 256개로 트림한다(그 프레임이 쓴 것은 제외). 8,000문단: 270 MB -> 39 MB, 끝까지 스크롤해도 45 MB. 퍼즈에 높이 오라클(편집한 편집기 = 새 편집기 측정 높이)을 넣어 찾은 결함 2건: - 목록 토글이 InvalidateMeasure를 안 불러 옛 높이가 남음 - NaN->값처럼 상위 비트만 다른 두 변경이 서명 해시에서 상쇄(1/28) -> Avalanche 혼합 임시 계측(DebugLog, TempSigProbe) 제거, 헤드리스 Window.Close() 제거. 반증: Avalanche·목록 측정·높이 캐시 무효화·트림·작업집합 보호 각각 되돌리면 빨강. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
요약
PR #57의 후속이다. 그 PR이 남긴 "캐시가 문서 전체의 레이아웃을 쥔다"를 해결한다.
ConditionalWeakTable)를 읽는다.LineBottoms, 높이와 함께 캐시).실측 (
LayoutCacheProbeD, 800×600 창, real Skia,RICHEDITOR_PERF=1)2,000문단 스크롤 +4 ms/쪽은 다시 화면에 들어온 문단을 재셰이핑하는 비용이다(main은 로드 때 전부 셰이핑하고 전부 쥐고 있었다). 높이는 캐시에 남아 있어 아무것도 움직이지 않는다.
새 퍼즈 오라클이 찾은 결함 2건
편집을 거친 편집기의 측정 높이가 같은 문서를 새로 받은 편집기와 같아야 한다.
InvalidateVisual만 불렀다(여백이 줄 폭을 줄이는데).Avalanche)를 거쳐 섞는다.검증
Avalanche→ 서명 테스트 · 목록InvalidateMeasure→ 목록 테스트 + 퍼즈 2시드 · 인라인 표_heightCache.Remove→ 기존 인라인 표 리사이즈 2건 · 트림/높이 캐시 → 상한 테스트 2건 · 작업집합 보호 → 400셀 표 테스트DebugLog,TempSigProbe) 제거, 헤드리스Window.Close()두 곳 제거(마지막 top-level을 닫으면 디스패처가 내려감)⚠ 브랜치에
wip:커밋이 섞여 있으니 squash merge를 권한다.GUI 실기 확인 권장: 긴 문서 스크롤·목록 토글·표 안 편집.
🤖 Generated with Claude Code