폴더 추가 시 UI 멈춤 수정 — 백그라운드 워커 저우선순위 + JPEG DCT 축소 디코드
원인: 실사진(수십 MP) 스캔 시 메타 추출(rayon)과 썸네일 워커가 NORMAL 우선순위로 전 코어를 포화시켜 WebView UI 스레드를 굶김. 풀해상도 JPEG 디코드는 파일당 ~72MB를 할당해 병렬 시 메모리 대역폭까지 포화. - prio 모듈: 현재 스레드 우선순위 낮추기(Win BELOW_NORMAL / macOS nice+5), 메타 전용 저우선순위 rayon 풀(코어-1, 전역 풀과 분리) - 썸네일 워커 스레드·스캔 스레드를 저우선순위로 → CPU 포화 시 UI 우선 스케줄 - meta 이미지/영상 추출을 저우선순위 풀에서 실행 - JPEG는 jpeg-decoder DCT 축소 디코드(1/8 등) 사용: 24MP 기준 풀디코드 63ms/72MB → 축소 38ms/1MB (1.7배·메모리 ~70배 절감), RGB24/L8만 처리하고 그 외(CMYK)는 기존 경로로 폴백 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Generated
+10
@@ -170,6 +170,7 @@ dependencies = [
|
||||
"image",
|
||||
"image_hasher",
|
||||
"imagesize",
|
||||
"jpeg-decoder",
|
||||
"jwalk",
|
||||
"kamadak-exif",
|
||||
"rayon",
|
||||
@@ -3187,6 +3188,15 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "jpeg-decoder"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07"
|
||||
dependencies = [
|
||||
"rayon",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.103"
|
||||
|
||||
Reference in New Issue
Block a user