ksj09406 c46abbd99a 5차 B-2: 폴더 비교를 세 걸음으로 나눠 3~5배 빠르게
훑기 - 가리기 - 세기로 나눴다. 훑으면서 그 자리에서 파일을 열어
견주던 것을, 트리를 먼저 세우고 가리는 일만 여러 갈래로 돌린다.
결과 차례는 트리가 정하므로 몇 갈래로 돌리든 같은 순서로 나온다.
세는 일만은 한 갈래로 한다. 파일이 64개 아래면 나누지 않는다 -
그 아래는 갈래를 세우는 값이 더 든다.

폴더를 훑는 방식도 바꿨다. Directory.GetFiles 는 이름만 주므로
파일마다 File.Exists 와 FileInfo 를 양쪽에 다시 물었다. 4,500개면
만 팔천 번이다. DirectoryInfo.GetFiles 는 크기와 수정 시각이
딸려 오므로 한 번으로 끝난다. 974ms 가 89ms 가 됐다.

재는 데 쓴 묶음은 우리가 만들었다(실제 소스를 열지 않는다).
2026-09-10 에 재 둔 모양을 흉내 냈고 씨앗을 고정해서 몇 번을
돌려도 똑같다.

  전체 비교  3,077ms -> 901ms (3.4배)
  빠른 비교  1,832ms -> 392ms (4.7배)
  앱에서 기다리는 시간 2,078ms -> 1,086ms (1.9배)

결과는 글자 하나까지 같다. 앱 쪽이 덜 줄어든 것은 비교가 끝난 뒤
화면 트리를 세우는 데 따로 드는 시간 때문이고, 거기는 손대지 않았다.
빠른 비교를 기본으로 켜지도 않았다 - 틀릴 수 있는 방법이다.

FolderTest 41 -> 51 (갈래 나누는 길, 열 번 돌려 같은 결과, 취소).
전체 698건 통과(하네스 20벌). 경고 0 · 오류 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 16:35:16 +09:00

5.5 KiB

변경 이력

무엇을 왜 바꿨는지 한 줄로 남긴다. 자세한 이야기는 날짜별 파일에 있다.

플랫폼(UbisamPlatform/doc/history/changelog.md)과 형식은 같지만 기준이 다르다. 플랫폼 changelog 의 핵심은 "다른 소비 프로그램에 미치는 영향"인데, MergeHub 는 소비 프로그램이라 그럴 대상이 없다. 여기서는 무엇을 왜 바꿨는지가 중심이다.

날짜 항목 커밋
2026-09-11 5차 B-2 — 폴더 비교를 훑기·가리기·세기 세 걸음으로 나눔. 메타데이터를 한 번만 묻고 가리는 일은 여러 갈래로. 전체 3.4배 · 빠른 4.7배 아래
2026-09-11 지시서 5차 고침 — 실제 소스를 더 읽지 않기로 함. 시험 재료는 우리가 만든다. B-2·C-1 을 그에 맞게 다시 씀 아래
2026-09-11 5차 B-1 — XAML 태그·속성·값을 갈라 칠함. 여러 줄에 걸친 여는 태그도 이어진다. 줄 넘김 상태를 깃발 묶음으로 넓혔다 아래
2026-09-11 5차 A-2 — Git 작업을 시작하는 자리에서 묻게 함. 가려서 묻는 것은 접고 전부 묻는다. 덤으로 4차 A-1 이 새던 자리 셋을 막음 아래
2026-09-11 5차 A-1 — 실제 저장소 2,091개로 인코딩을 확인(깨짐 0). 판별 코드가 두 군데 복사돼 있던 것을 한 곳으로 모으고, CP949 를 한 이름으로 부르게 함 아래
2026-09-10 4차 C-5 — 한 번 정하는 것들을 한자리에 모아 접고, 차이 이동을 개수 옆으로 아래
2026-09-10 4차 C-4 — 범례를 눌러 그 갈래로 이동. 0건은 흐리게 아래
2026-09-10 4차 C-3 — Git 탭의 원격 칸을 접을 수 있게. 로컬 경로 한 줄만 남고 세로 128px 가 목록으로 간다 아래
2026-09-10 엔터 고침의 되돌이 문제 — TextChanged 안에서 편집기 글을 갈아 끼워 캐럿이 엉켰다. 한 차례 뒤로 물림 아래
2026-09-10 엔터 반응 지연 — 줄 수가 바뀌면 0.6초 타이머만 기다리느라 화면이 비어 있었다. 그 자리에서 다시 맞추게 고침 아래
2026-09-10 4차 C-2 — 아래쪽 세 군데 상태 정보를 창 아래 한 줄로. 두 패널 코드 높이가 저절로 맞는다 아래
2026-09-10 4차 C-1 다시 — 머리글을 파일 이름만으로 줄인 것이 잘못이었다. 두 경로에서 다른 부분만 남기게 고침 아래
2026-09-10 4차 C-1 — 파일 비교에서 같은 경로가 나오던 세 자리를 하나로. 코드가 두 줄 더 보인다 아래
2026-09-10 4차 B-3 — 폴더 비교 목록을 파일 비교 화면에서 이전/다음으로 딛는다 (Ctrl+PageUp/PageDown) 아래
2026-09-10 4차 B-1 — 최근에 견준 파일 짝·폴더 짝을 기억해 위 줄에서 바로 연다. 없는 경로는 흐리게만 하고 지우지 않는다 아래
2026-09-10 4차 A-2 — 내보낸 보고서 머리글에 만든 사람을 넣음. 이름 판단을 머지 주석과 한 함수로 모았다 아래
2026-09-10 4차 A-1 — 저장하지 않은 편집이 말없이 사라지던 길 여덟 군데를 막음. 플랫폼에 세 갈래 확인 창을 새로 넣었다 아래
2026-09-10 4차 D-2 — 항목을 끝내면 상세·상태·한 줄을 각각 어디에 적을지 공통 규칙으로 못박음 아래
2026-09-10 4차 D-1 — 721줄짜리 진행상황을 history/ 의 날짜별 파일로 나누고 지시서를 작업지시/ 로 모음 아래
2026-09-09 3차 A 묶음 — 폴더 고르기 다운 · 화면 이동 결함 3가지 · 저장소 최상위 열기 5e667af af27800 93a507e b5bd06c / 플랫폼 595aa23 f664c31
2026-09-09 3차 B 묶음 — 3-Way 가로·세로 막대 · 행 어긋남 · Take Mine 179dffb
2026-09-09 3차 C·E 묶음 — 코드 툴팁 · 글자 잘림 · 폴더 복사 확인 창 · 세로 막대 · 폭 되돌림 · 머리 빈 공간 · 반영 색 · 코드 겹침 9a9c431 8def1ad 05c74fc 4f33cac / 플랫폼 5522ca0
2026-09-09 3차 D 묶음 — 주석만 다름 · C++ 전처리 · 3-Way 덩어리 반영 · 결과 내보내기 · 폴더 안 전체 검색 · 끌어다 놓기 5c8c942 451b624 32c0146 ee5d34c 373990b 196af0a
2026-09-08 저장소 개설 (MergeHub · UbisamPlatform 각각) 7719094 / 36ee902
2026-09-08 ④ Git 조작 5가지 — amend · stash 목록 · 커밋 간 비교 · blame · 변경분 추출 9956567
2026-09-08 ③ 3-Way — 자동 병합 · 충돌만 이동 · 병합 완료 판정 85c5e9e
2026-09-08 ① 폴더 비교 — 폴더째 복사·삭제 · 보기 필터 · 비교 취소 524a6a7
2026-09-08 ② 파일 비교 — 바꾸기 · 덩어리 반영 · 저장 형식 · 이진/그림 비교 de1a43c 55d9deb
2026-09-08 ⑤ 밖에서 부르기 — 명령줄 인자 · 탐색기 우클릭 아래

날짜별 상세

날짜 문서 내용
2026-09-11 2026-09-11-5차.md 5차 지시서 진행 중
2026-09-10 2026-09-10-4차.md 4차 지시서 열세 항목. 전부 끝
2026-09-09 2026-09-09-3차.md 3차 지시서 A~E 스물세 항목. 항목마다 원인과 판단을 적었다
2026-09-08 2026-09-08-2주차.md 기능 덩어리 다섯 개(①~⑤)를 채운 주