aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research
diff options
context:
space:
mode:
Diffstat (limited to 'docs/research')
-rw-r--r--docs/research/125-tier-first-steps.md8
1 files changed, 5 insertions, 3 deletions
diff --git a/docs/research/125-tier-first-steps.md b/docs/research/125-tier-first-steps.md
index ada82c9..bb926e1 100644
--- a/docs/research/125-tier-first-steps.md
+++ b/docs/research/125-tier-first-steps.md
@@ -52,10 +52,10 @@
## 어셈블리로 잰 꼴
-`forms.c`(행렬 곱의 안쪽 루프, 11번의 중앙값): 계층의 꼴 20.7 ms, 검사와 비트 없이 20.1, 포인터와 곱하기-더하기 13.1, 포인터와
+`forms.c`(행렬 곱의 안쪽 루프, 11번의 중앙값; `2026-10-05-forms.jsonl`에 세 번): 계층의 꼴 20.7 ms, 검사와 비트 없이 20.1, 포인터와 곱하기-더하기 13.1, 포인터와
곱·합 따로 10.0, 거기에 두 검사 10.2, 적재 앞에 비트 13.4, 정적 배열의 C 3.8(바깥 루프를 벡터로 묶는다).
-`newton.c`(roots의 루프): 계층의 꼴(next를 따로 두고 뒤로 가며 옮김) 7.7 ms, gcc의 꼴(next를 r의 레지스터에) 7.0, 수로 하는 유한 검사를
+`newton.c`(roots의 루프; `2026-10-05-newton.jsonl`에 세 번): 계층의 꼴(next를 따로 두고 뒤로 가며 옮김) 7.7 ms, gcc의 꼴(next를 r의 레지스터에) 7.0, 수로 하는 유한 검사를
더하면 9.7, 정수로 하면 8.7. 같은 생각으로 0으로 나누기 검사를 정수로 하면 오히려 느렸다.
측정이 짐작을 두 번 뒤집었다. 명령 18개를 16개로 줄인 것(`mov` 하나와 줄 밖 비트맵)은 0%였고, 상수 나눗셈을 곱셈으로 바꾼 것은
@@ -73,7 +73,9 @@
- **텍스트**: 텍스트를 지역 값으로 담기(aup의 `let`과 Pure의 지역 칸)와 텍스트 연산의 기계어. 이 일의 남은 시간 대부분이 같은 텍스트를
세 번 만드는 데와 실행기의 디스패치에 있다(디스패치 약 20%, 해시와 탐사 약 11%, 수의 서식과 텍스트 만들기 약 13%).
-- **BFS**: 계층이 키 구간의 걷기(sliced EACH)와 이벤트 리스트의 덧붙이기를 하게.
+- **BFS**: 재는 동안 단계 호출은 0.1%이고(그래프를 읽은 뒤만 표본) 시간은 일반 코드(61%) 대 C(39%)다. 일반 코드는 적재마다 열의
+ 폭 표시를 보는 분기와 수↔정수 변환을 한다. 계층이 키 구간의 걷기(sliced EACH)와 덧붙이기를 하려면 리스트의 개수를 바뀌는 SSA 값으로
+ 다뤄야 한다(큐는 같은 묶음에서 덧붙이고 위치로 읽는다).
- **루프 묶음 일반**: 레지스터가 모자라면 계층이 묶음을 포기한다(행렬 곱이 그랬다). 루프 밖에서만 쓰이는 진입 값을 다시 읽거나 프레임에
두는 스필이 필요하다. 꽉 차지 않은 DENSE를 키로 훑는 루프는 지금 일반 코드로 돈다(루프를 열 때 읽을 키만 확인하는 것이 다음).
- **뜻의 값**: 검사 없는 계층(`PURE_UNCHECKED`)으로 일마다 검사의 몫을 재는 손잡이는 아직 없다. roots에서 임시로 잰 유한 검사의