diff --git a/doc/history/2026-09-17-9차.md b/doc/history/2026-09-17-9차.md index 609bb30..71abee4 100644 --- a/doc/history/2026-09-17-9차.md +++ b/doc/history/2026-09-17-9차.md @@ -154,3 +154,43 @@ - **규칙 "머지 주석 무시" 를 끈 채 다시 정렬하면 반영 색이 옆 줄로 옮겨 간다.** 주석 줄이 BASE 의 코드 줄(`Power93`)과 한 행으로 짝지어져, 초록(머지 반영함)이 주석 줄에 · 보라(직접 수정)가 반영한 코드 줄(`Power100 => 0.9`)에 붙는다. 반영 표시가 BASE 줄 번호로 붙들려 있어서다. 이번에 바꾼 것이 아니고 기본값(켬)에서는 나지 않는다. 범례 수 · 저장 내용은 같다. + +## B-2. 폴더 비교 뒤 화면 트리를 세우는 데 1초 남짓 (2026-09-17, 완료 · 고치지 않음) + +**재 보니 트리는 1초가 아니었다.** 트리를 만들고 첫 화면을 그리기까지 0.13~0.24초이고, 기다림의 대부분은 비교 자체였다. 줄일 자리가 없어 고치지 않았다. 제품 코드는 바꾸지 않았다. + +### 무엇으로 쟀나 + +- 5차 B-2 의 시험 묶음(`FolderPerf/Corpus.cs`, 씨앗 고정) — 4,500개 · 같음 4,063 · 다름 359(주석만 294) · 왼쪽만 40 · 오른쪽만 38. 실제 소스는 열지 않았다. +- 앱에 **임시 측정 로그**를 넣어 단계를 나눴다(커밋하지 않고 잰 뒤 `git checkout` 으로 되돌리고 다시 빌드). + ① 백그라운드 비교(`FolderComparer.Compare`) ② 트리 노드 만들기(`Rebuild` — 노드 생성 · 필터 · 가지치기 · 목록에 넣기) ③ 첫 화면(`Rebuild` 시작부터 WPF 가 그리기를 마치고 한가해질 때 `ApplicationIdle` 까지). +- 조작은 사람 길 그대로(`d9-b2.ps1`): 폴더 비교 탭에 두 경로 → [비교] 세 번 → 필터를 전체 · 같은 것만 · 다른 것만 · 전체로. + +### 잰 값 (ms) + +| 경우 | 비교 | 트리 만들기 | 첫 화면까지 | 트리 노드 · 펼쳐 보이는 것 | +|---|---|---|---|---| +| [비교] 1회 · 캐시 찬 상태 아님(그날 첫 비교) | **9,170** | 5 | 135 | 544 · 59 | +| [비교] 데운 뒤 5회 | 682 · 796 · 703 · 683 · 711 | 5~17 | 126~167 | 544 · 59 | +| 필터 → 전체 (다시 훑지 않음) | - | 16 · 17 | **240 · 229** | 4,608 · 275 | +| 필터 → 같은 것만 | - | 16 | 38 | 4,171 · 5 | +| 필터 → 다른 것만 | - | 6 | 196 | 544 · 59 | + +- 기본 필터(다른 것만)에서 사람이 기다리는 시간 ≈ 비교 0.7초 + 첫 화면 0.13초 ≈ **0.85초**. 트리 몫은 15% 쯤이다. +- 트리가 가장 무거운 "전체" 에서도 0.24초. 노드 만들기는 17ms 이고 나머지는 WPF 가 펼친 줄(275개)을 그리는 값이다. 트리는 이미 가상화(`VirtualizingPanel` Recycling)를 쓴다. + +### 왜 5차는 "1초 남짓" 이라고 적었나 + +- 5차는 **자동 조작으로 [비교] 를 누른 때부터 요약 글이 뜰 때까지**를 쟀다(1,086ms). 이번에도 같은 방식으로는 1,084~1,428ms 가 나왔다. + 그런데 누르는 도구가 누른 뒤 0.6초를 쉬고(`Click` 의 대기), 요약 글을 찾으려 화면 요소를 수천 개 훑는 값이 더해진다. 앱 안에서 잰 비교 + 첫 화면(0.84초)과의 차이가 그만큼이다. +- 그 차이를 "트리를 세우는 값" 으로 읽은 것이 틀렸다. 이번에는 앱 안에서 단계를 나눠 잰 값을 기준으로 삼는다. + +### 정한 것 + +- **고치지 않는다.** 트리 몫이 0.13~0.24초라 줄여도 사람이 느낄 차이가 없고, 트리 동작(펼침 · 선택 · 필터 · 끌어 놓기)을 건드릴 까닭이 없다. 지시서의 "트리 세우기가 대부분이면" 에 해당하지 않는다. +- "더 줄일 자리" 로 적어 둔 5차 기록은 이 측정으로 닫는다. + +### 새로 본 것 (고치지 않음) + +- **그날 첫 비교는 9.2초**였다(데운 뒤 0.7초의 13배). 4,500개 파일을 디스크에서 처음 읽는 값으로 보인다(디스크 캐시 · 백신 검사). 한 번 잰 값이고 원인은 가려 보지 않았다. + 사람이 처음 비교할 때 겪는 시간은 이쪽이다. diff --git a/doc/history/changelog.md b/doc/history/changelog.md index 814f6c5..76772bc 100644 --- a/doc/history/changelog.md +++ b/doc/history/changelog.md @@ -8,6 +8,7 @@ | 날짜 | 항목 | 커밋 | |---|---|---| +| 2026-09-17 | **9차 B-2** — 5차에 "폴더 비교 뒤 트리를 세우는 데 1초 남짓" 으로 적어 둔 것을 앱 안 임시 측정(잰 뒤 되돌림)으로 단계별로 쟀다. 4,500개 묶음에서 트리 만들기 5~17ms · 첫 화면까지 0.13초(필터 전체 0.24초), 비교는 데운 뒤 0.7초. 5차 값은 자동 조작 대기가 섞였다. 줄일 자리가 없어 고치지 않음(코드 변경 없음). 그날 첫 비교 9.2초는 적어 둠 | 아래 | | 2026-09-17 | **9차 B-1** — 네 칸에서 줄을 반영하며 넣은 머지 주석 줄이 넣는 순간 "추가"(파랑)였다가 다시 정렬하면 "무시"(회색)로 바뀌었고, LOCAL(Mine) 칸에 내 파일에 없는 주석 글이 보였다. 사용자 결정대로 넣는 순간부터 다시 정렬한 모양(규칙 켜짐이면 무시 · Mine 빈 자리)으로 넣는다. 파일에 원래 있던 주석 줄과 같은 색. 하네스 NoteTest +5 | 아래 | | 2026-09-17 | **9차 A-2** — 8차 E-1 에서 한 번 다른 브랜치 커밋이 기준으로 잡힌 것은 A-1 과 뿌리가 같았다(선택을 놓치면 목록 맨 위). 해시만 지키자 cherry-pick [커밋] 뒤 선택이 옛 HEAD 에 남아 방금 커밋한 줄이 "남은 차이 6줄" 로 보여, **HEAD 를 보고 있었으면 커밋 · 체크아웃 뒤 새 HEAD 를 따라가게** 함께 고침. 같은 순서 여섯 번 모두 규칙대로. 하네스 +5 | 아래 | | 2026-09-17 | **9차 A-1** — cherry-pick 마지막 [Save] 뒤 두 칸의 기준이 고른 커밋 · 다른 브랜치 커밋 · HEAD 중 하나로 그때그때 달랐는데 요약은 늘 "내 쪽 대비" 라고 했다. 새로고침이 이력 목록을 갈아 끼우며 선택을 놓치면 **목록 맨 위**로 채웠기 때문([모든 브랜치] 에서 맨 위는 HEAD 가 아님). 사용자 결정대로 작업 중 충돌이 막 0 이 되면 기준을 HEAD 로 옮기고, 그 밖에는 해시로 되찾고 없으면 HEAD. 요약은 기준이 HEAD 일 때만 작업 글. 하네스 +18 | 아래 | diff --git a/doc/진행상황.md b/doc/진행상황.md index b207edf..740092a 100644 --- a/doc/진행상황.md +++ b/doc/진행상황.md @@ -258,7 +258,7 @@ | 상태 | 항목 | |---|---| | **완료** | B-1 MERGED 칸에서 넣은 주석 줄이 다시 정렬하면 "무시" 색이 된다 — 사용자가 "처음부터 무시 색" 을 고름(2026-09-17). 넣는 순간 "추가"(파랑)였고 LOCAL(Mine) 칸에 주석 글이 보였는데, 다시 정렬했을 때와 같은 모양(무시 · Mine 빈 자리)으로 넣는다. Undo · Redo · 저장 내용 그대로, 규칙을 끄면 지금처럼 추가. 규칙을 끈 채 다시 정렬하면 반영 색이 옆 줄로 옮겨 가는 것은 적어 둠 | -| 대기 | B-2 폴더 비교 뒤 화면 트리를 세우는 데 1초 남짓 (재고 정함) | +| **완료** | B-2 폴더 비교 뒤 화면 트리를 세우는 데 1초 남짓 — 고치지 않음. 앱 안에서 단계를 나눠 재니 트리 만들기 5~17ms · 첫 화면까지 0.13초(필터 전체 0.24초)이고 기다림의 대부분은 비교(데운 뒤 0.7초). 5차의 "1초" 는 자동 조작 대기가 섞인 값. 그날 첫 비교는 9.2초(디스크 첫 읽기로 보임)를 적어 둠 | ### C. 문서