diff --git a/doc/history/2026-09-17-10차.md b/doc/history/2026-09-17-10차.md index bb93874..7689984 100644 --- a/doc/history/2026-09-17-10차.md +++ b/doc/history/2026-09-17-10차.md @@ -172,3 +172,55 @@ ### 남긴 것 - 규칙을 끈 두 칸 비교에서 주석 줄이 끼어들면 정렬이 한 줄씩 밀리는 것(위 표의 `Speed3` ↔ `Speed2`)은 규칙을 끈 이상 비교 키가 없어 생기는 모양이라 그대로 둔다. 기본값(켬)에서는 나지 않는다. + +## D-1. 그날 첫 큰 폴더 비교가 9.2초 (2026-09-17, 완료 · 고치지 않음) + +**9.2초는 다시 나지 않았다.** 파일 캐시를 비운 첫 비교도 0.5초 안팎으로 데운 상태와 같았다. 줄일 자리가 없어 제품 코드는 바꾸지 않았고, 매뉴얼 "알아 둘 한계" 를 잰 값으로 고쳤다. + +### 무엇으로 쟀나 + +- 5차 B-2 시험 묶음(`%TEMP%\mergehub-perf`, 4,500개 · 양쪽 8,922개 · 136MB). 이 PC 디스크는 **NVMe SSD**(INTEL SSDPEKNU010TZ) · 논리 CPU 16개. +- **차가운 상태 만들기**: 재부팅 · 시스템 도구(대기 메모리 비우기)는 쓰지 않았다. 파일마다 **버퍼 없이(`FILE_FLAG_NO_BUFFERING`) 한 번 열었다 닫아** 그 파일의 캐시를 비웠다. + 먹는지 먼저 확인: 크기가 같은 4,063쌍을 한 갈래로 읽기 — 데운 뒤 407 · 386ms → **비운 뒤 1,808ms** → 곧바로 다시 396ms. 먹는다. +- 측정 프로그램 `ColdPerf`(앱의 `FolderComparer` 를 그대로 컴파일, 앱 코드 변경 없음) · 앱에서는 비운 뒤 새로 켜서 [비교](`d9-b2.ps1`). +- 백신 CPU 시간도 재려 했으나 `MsMpEng` 프로세스 시간은 권한 때문에 읽히지 않았다(설정은 건드리지 않음). + +### 잰 값 + +| 경우 | 전체 비교 | 빠른 비교(크기 · 수정일) | +|---|---|---| +| 데운 상태 | 479ms | 159ms | +| 캐시 비운 뒤 1 · 2 · 3회 | **535 · 455 · 494ms** | 172 · 154 · 193ms | +| 비운 뒤 곧바로 한 번 더 | 562 · 406 · 475ms | - | + +결과 요약은 모든 경우 글자 하나까지 같았다(`전체 4500개 · 다름 359(주석만 294) · 왼쪽만 40 · 오른쪽만 38 · 같음 4063`). + +크기가 같은 4,063쌍을 **끝까지 읽기만**(캐시 비운 뒤, 갈래 수별): + +| 갈래 | 1 | 4 | 16(논리 CPU 수) | 32 | 64 | +|---|---|---|---|---|---| +| ms | 1,775 | 583 | 318 | 305 | 332 | + +앱(비운 뒤 새로 켬, 자동 조작으로 누른 때부터 요약이 뜰 때까지 — 누름 뒤 0.6초 대기 포함): + +| 회 | 첫 [비교] | 둘째 | 셋째 | +|---|---|---|---| +| 1 | 1,760ms | 1,457ms | 1,414ms | +| 2 | 1,051ms | 1,459ms | 1,458ms | + +### 판단 + +- **파일 캐시가 비어도 여러 갈래로 읽어서 몇백 ms 차이에 그친다**(한 갈래였다면 0.4 → 1.8초). 폴더 비교는 이미 64개가 넘으면 여러 갈래로 가린다(5차 B-2). +- 앱을 새로 켠 직후 첫 비교도 느리지 않다 — 앱 쪽 첫 실행 값(JIT 등)도 아니다. +- 9차 B-2 의 9.2초는 **며칠 손대지 않은 묶음을 그날 처음** 비교한 값이었다. 파일 캐시 말고 남는 것은 디스크 정보(폴더 목록 · MFT) 캐시, 백신 검사(서명 갱신 뒤 다시 검사 등)인데 + 둘 다 재부팅이나 시스템 · 보안 설정 없이는 다시 만들 수 없어 가리지 못했다. +- **고치지 않는다.** 다시 나지 않는 것을 짐작으로 고치지 않는다(공통 규칙). 결과가 바뀌는 길(빠른 비교를 기본으로)은 하지 않는다. + +### 고친 것 (문서) + +- 웹 문서 매뉴얼 "알아 둘 한계" — "첫 비교 9.2초 · 두 번째부터 0.7초" 를 잰 값(캐시 비운 첫 비교도 약 0.5초, 한 갈래라면 0.4 → 1.8초, 9.2초는 한 번 났으나 다시 안 남, HDD 는 재 보지 않음)으로. 발행은 E-2 에서 함께 한다. + +### 남긴 것 + +- **느린 디스크(HDD · SATA SSD)에서는 재 보지 않았다.** 이 PC 는 NVMe 뿐이다. 한 갈래 1.8초가 여러 갈래로 0.3초가 된 것은 NVMe 가 동시 읽기에 강해서이고, + HDD 에서는 여러 갈래 읽기가 오히려 느릴 수 있다. 사내 PC 가 HDD 라면 베타 배포 때 재 볼 거리다. diff --git a/doc/history/changelog.md b/doc/history/changelog.md index e616ad4..a3bca93 100644 --- a/doc/history/changelog.md +++ b/doc/history/changelog.md @@ -8,6 +8,7 @@ | 날짜 | 항목 | 커밋 | |---|---|---| +| 2026-09-17 | **10차 D-1** — 9차 B-2 에서 한 번 잰 "그날 첫 폴더 비교 9.2초" 를 다시 냈다. 파일마다 버퍼 없이 열어 캐시를 비워도(한 갈래 읽기 0.4 → 1.8초로 먹는 것 확인) 전체 비교는 0.46~0.54초로 데운 상태와 같았고(여러 갈래 읽기), 앱을 새로 켠 첫 비교도 느리지 않았다. 9.2초는 다시 안 남 → 고치지 않음(제품 코드 변경 없음). 매뉴얼 한계 문장을 잰 값으로 고침. HDD 는 재 보지 않음 | 아래 | | 2026-09-17 | **10차 C-1** — 설정 "머지 주석 무시" 를 끈 채 네 칸을 다시 정렬하면 주석 줄이 BASE 코드 줄과 한 행이 되어 반영 표시(BASE 줄 번호)가 주석 줄에, 반영한 코드 줄은 "직접 수정" 으로 보였다. 네 칸은 규칙과 상관없이 주석 줄과 코드 줄을 떼어 놓고, 다시 정렬한 주석 줄을 "반영함" 으로 칠하지 않게 함. 요약 · 줄 수 · 저장 해시 그대로. 두 칸도 떼어 보니 차이 수가 늘어(4 → 5줄) 두 칸은 그대로. 하네스 NoteTest +5 | 아래 | | 2026-09-17 | **10차 B-1** — Git 탭과 파일 비교 탭이 고른 커밋 값을 함께 쓰는데 표시는 새로고침 전까지 서로 안 따라왔다. 파일 비교 탭에서 고르면 Git 탭은 옛 커밋에 선택 표시가 남은 채 **[Revert] 가 보이지 않는 커밋에 걸렸다.** 사용자 결정대로 양방향으로 바로 따라가고(`CommitChosen`), 파일 비교 탭에 저장 안 한 편집이 있으면 Git 탭 목록이 선택을 바꾸기 전에 물어 [취소] 면 누름을 막는다. 하네스 +4 | 아래 | | 2026-09-17 | **10차 A-1** — 9차 D-1 N1(네 칸에서 고르기 한 번이 안 남아 멈춤)을 앱 안 임시 로그(잰 뒤 되돌림)와 함께 61회 · 누름 366번(병합 · cherry-pick × 9차 간격 · 0.1초) 되풀이 — 다시 안 남, 앱은 Take 372번 모두 충돌 줄에서 받아 하나씩 줄임(헛돈 0). Take 뒤 [다음 충돌] 처리 전에는 Take 단추가 꺼져 있는데 9차 시험 도구가 "꺼져서 안 누름" 을 버린 것으로 보임. 제품 코드 변경 없음, 시험 도구가 다시 누르고 못 누르면 적게 고침 | 아래 | diff --git a/doc/web/index.html b/doc/web/index.html index 8b1c2b1..9d20295 100644 --- a/doc/web/index.html +++ b/doc/web/index.html @@ -556,7 +556,7 @@ Accept Theirs (상대 쪽 파일 그대로) 15