ms 단위 CPU 프로파일링 — 로딩 핫스팟 #11

Closed
opened 2026-05-08 15:27:37 +09:00 by HYUNJUNGLEE · 1 comment
Owner

사용자 피드백 #11: 프로그램 구현 시, 로딩이 오래 걸리는 부분 (위성지도 결합, 구조물 빌드 시 등) 은 CPU 이용률이 대폭 증가하는 프로세스를 ms 단위로 추적해서 원인을 규명하고 최적화하는 조치 필요.

적용 결과

  • harness/perf.py 신규 (commit be82843) — perf_block(label) ctx + set_perf_log().
  • scanvas_maker.py 5곳 wire (commit c94b4a7):
    • import 블록 + 폴백 (line ~58)
    • SCanvasApp.__init__ set_perf_log(self.log) (line ~613)
    • TIN densify Phase C (line ~4430)
    • 위성 타일 다운로드 (line ~5384)
    • 제어맵 캡처 x3 + composite (line ~5864)
  • PERFORMANCE_BASELINE.md (commit e9cc6bf, 397줄) — 19개 핫스팟 카탈로그.

출력 포맷 예

[PERF] 위성 타일 다운로드+병합: wall=12340.5ms cpu=860.3ms (I/O/Net-bound)
[PERF] TIN densify Phase C (10m→1m): wall=2150.7ms cpu=2080.4ms (CPU-bound)
[PERF] control map capture x3 + composite: wall=4520.1ms cpu=3760.8ms (CPU-bound)

잔여

  • 사용자가 실 도면 1회 측정 → PERFORMANCE_BASELINE.md "측정 후 비교 표" 채우기.
  • 결과 보고 핫스팟 H1·H7·H9·H13·H18 등 추가 wrap.
  • 실측 후 GIL 해제 / numpy 벡터화 / 스레드 풀 도입 결정.
**사용자 피드백 #11**: 프로그램 구현 시, 로딩이 오래 걸리는 부분 (위성지도 결합, 구조물 빌드 시 등) 은 CPU 이용률이 대폭 증가하는 프로세스를 ms 단위로 추적해서 원인을 규명하고 최적화하는 조치 필요. ## 적용 결과 - ✅ `harness/perf.py` 신규 (commit `be82843`) — `perf_block(label)` ctx + `set_perf_log()`. - ✅ `scanvas_maker.py` 5곳 wire (commit `c94b4a7`): - import 블록 + 폴백 (line ~58) - `SCanvasApp.__init__` `set_perf_log(self.log)` (line ~613) - TIN densify Phase C (line ~4430) - 위성 타일 다운로드 (line ~5384) - 제어맵 캡처 x3 + composite (line ~5864) - ✅ `PERFORMANCE_BASELINE.md` (commit `e9cc6bf`, 397줄) — 19개 핫스팟 카탈로그. ## 출력 포맷 예 ``` [PERF] 위성 타일 다운로드+병합: wall=12340.5ms cpu=860.3ms (I/O/Net-bound) [PERF] TIN densify Phase C (10m→1m): wall=2150.7ms cpu=2080.4ms (CPU-bound) [PERF] control map capture x3 + composite: wall=4520.1ms cpu=3760.8ms (CPU-bound) ``` ## 잔여 - 사용자가 실 도면 1회 측정 → PERFORMANCE_BASELINE.md "측정 후 비교 표" 채우기. - 결과 보고 핫스팟 H1·H7·H9·H13·H18 등 추가 wrap. - 실측 후 GIL 해제 / numpy 벡터화 / 스레드 풀 도입 결정.
Author
Owner

Closed — Phase 1 wire 완료 (commit 470020c).

  • harness/perf.py 신규: perf_block(label) ctx + set_perf_log().
  • scanvas_maker.py setup 2곳 + hotspot wraps 3곳 (PERFORMANCE_BASELINE.md H1/H3/H12 매핑):
    • L60 import + 폴백 (setup)
    • L625 SCanvasApp.__init__set_perf_log(self.log) (setup)
    • L4444 TIN densify Phase C wrap → H3
    • L5398 위성 타일 다운로드 wrap → H1
    • L5880 제어맵 캡처 x3 + composite wrap → H12
  • PERFORMANCE_BASELINE.md 19개 핫스팟 카탈로그.

출력 형식: [PERF] {label}: wall={NN}ms cpu={NN}ms (CPU|I/O/Net-bound) — GUI 로그 패널에 자동 표시.

후속 (별도 이슈 시 생성): 사용자 실 도면 측정 결과 기반 추가 hotspot wrap (H7·H9·H13·H18 등) + 최적화.

**Closed — Phase 1 wire 완료 (commit `470020c`).** - `harness/perf.py` 신규: `perf_block(label)` ctx + `set_perf_log()`. - `scanvas_maker.py` setup 2곳 + hotspot wraps 3곳 (PERFORMANCE_BASELINE.md H1/H3/H12 매핑): - L60 import + 폴백 (setup) - L625 `SCanvasApp.__init__` 의 `set_perf_log(self.log)` (setup) - L4444 TIN densify Phase C wrap → H3 - L5398 위성 타일 다운로드 wrap → H1 - L5880 제어맵 캡처 x3 + composite wrap → H12 - `PERFORMANCE_BASELINE.md` 19개 핫스팟 카탈로그. 출력 형식: `[PERF] {label}: wall={NN}ms cpu={NN}ms (CPU|I/O/Net-bound)` — GUI 로그 패널에 자동 표시. 후속 (별도 이슈 시 생성): 사용자 실 도면 측정 결과 기반 추가 hotspot wrap (H7·H9·H13·H18 등) + 최적화.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: HYUNJUNGLEE/s-canvas#11