-
Notifications
You must be signed in to change notification settings - Fork 0
Reading Hash Allocation
2026-10-04 KST. 개발 #1196의
깨끗한 후보 08f2d813에서 이전 main 041c8bbf와 비교한 결과입니다.
개발 #1196·main #1197은 각각
필수 여섯 검사·독립 증거 검증 뒤 정상 병합했습니다. 현재 깨끗한 main 93c6463d를
Go1.27.1로 빌드·설치했습니다.
실행기는 처음 필요할 때 32KiB 배열을 하나 만들고 다음 파일 해시에도 재사용합니다. 각 실행기가 자기 차례에 빌려 쓰는 작은 작업대와 비슷합니다. 실행기가 닫히거나 요청이 취소되면 배열 참조를 해제합니다. Go 공구와 바디 실행파일 전체는 현재 바이트를 계속 읽으며, 두 실제 실행도 유지합니다.
파일 크기는 256MiB까지 허용하고 실제 읽기도 한 바이트의 초과 감지를 포함해 제한합니다. 읽은 길이가 처음 크기와 달라지면 실패합니다. 열린 파일의 내용과 길이를 확인하는 범위이며, 파일시스템 전체를 원자적으로 고정하는 기능은 제공하지 않습니다.
--timing의 터미널에서 실행되지 않은 단계는 unobserved로 보입니다.
첫 실행만 끝난 경우에도 두 실행의 합계는 unobserved이고, JSON에는 관측한
각 실행이 남습니다. 관측한 0은 0.000ms입니다. 실패한 단계가 무료로 실행된
것처럼 읽히는 혼동을 줄였습니다. 단계 기록의 사용법.
먼저 두 실행파일과 여섯 복사 방식으로 192회 해시해 크기를 비교했습니다. 큰 버퍼로 공구 해시가 일관되게 빨라지지는 않았습니다. 낮은 보관 메모리를 위해 32KiB를 선택했습니다. 구현의 1MiB 파일 반복 벤치마크에서 호출당 할당은 약 33.5kB → 0.8kB, 횟수는 양쪽 9회였습니다. 실행기마다 최초 보관 배열 하나를 따로 만들며, 이 준비는 재사용 수치 밖입니다.
같은 기존 한영 원본 두 개에서 모델·결정론을 이전→후보→후보→이전 순서로 실제로 사용했습니다. 창마다 여섯 요청, 전체 96회 생성·48회 모델 판단·192회 바디 실행에서 12,288/12,288 유한 기대값과 고정 생성 Go를 유지했습니다. 저장 파일 읽기 전용 확인 16회도 통과했습니다. 새 의도 과제와 학습 갱신은 0개입니다.
| 재사용 요청의 중앙값, 각 40회 | 이전 설치 | 후보 |
|---|---|---|
| 응답 | 64.13ms | 65.88ms |
| 공구 전체 해시 | 15.19ms | 15.03ms |
| 현재 자식 CPU 합 | 12.82ms | 13.20ms |
| 현재 자식 중 최대 단일 RSS | 4.42MB | 4.42MB |
이번 변화에서 확인한 성과는 해시 호출의 할당 감소와 표시 개선입니다. 응답 시간 범위는 겹쳤고 일반적인 속도 개선을 판단할 근거는 부족합니다. 위 CPU/RSS는 현재 자식만 집계합니다. 부모 컴파일러의 해시 비용, 모델 단독 RAM과 호스트 CPU 사용률은 별도 측정이 필요합니다. macOS arm64/Apple M4/Go1.27.1의 기존 두 의도 반복입니다.
설치본에서 한영 모델·결정론 8회 생성·4회 실제 판단·16회 실행으로 1,024/1,024와
고정 생성 Go를 확인했습니다. 모델 재사용 응답 69.42·62.53ms, 결정론 65.49·60.34ms와
최초 응답도 보존했습니다. 공구가 없는 한 요청은 종료 1, 모델·바디 실행 0회,
128개 기대값 미관측과 native unobserved를 남깁니다. 성공·실패 저장 기록을
읽기 전용으로 다섯 번 확인했습니다.
실행 공구에 FIFO를 지정했을 때 파일을 여는 단계에서 기다리는 문제도 관측했습니다.
해당 프로세스를 확인·종료하고 원본을 보존했습니다. 개발 #1198에서
Unix의 비차단 열기와 실제 파일 종류 검사를 추가해 필수 CI·독립 증거 뒤 개발에
병합했습니다. main #1199도 자체 검사·독립 증거 뒤 병합하고 93fa2742를 설치했습니다.
실제 후보 FIFO는 0.60초, 새 설치본은 19.665ms에 오류를 알리고 종료했습니다.
준비·캐시 조건이 달라 두 원본을 보존합니다. 실패를 읽고 다시 실행하기.