1
0
Fork 0
Everything2Everything/src
Yun Chan 729b9b699d refactor(P6): Independent 배치 병렬화 + Magick ResourceLimits (즉효 최적화)
순차 for-loop(멀티코어를 1코어만 사용)을 코어 수 병렬로 — 50장 배치가 코어 수만큼 가속.
ConvertOptions 불변(P4)이라 공유 읽기 스레드 안전. 시그니처 불변(내부 교체).

- ConversionEngine.ConvertManyAsync: Independent 분기를 Parallel.ForEachAsync(MaxDOP=BatchParallelism)로.
  결과는 인덱스 고정 ConvertResult[]로 순서 보존. 진행률은 완료 건수(Interlocked.Increment)로 보고
  (파일별 분수 진행률은 동시 실행에서 의미가 흐려짐). DOP<=1이면 기존 순차 경로(세부 진행률 보존).
  CombineToSingle은 단일 연산이라 병렬 대상 아님(기존대로).
- ConvertOptions.BatchParallelism(기본 = 논리 코어 수) 추가 — 미디어 위주 배치는 낮춰 튜닝 가능.
- MagickProvider 정적 생성자: ResourceLimits.LimitMemory(60%) — 병렬 시 동시 MagickImage OOM 방지
  (초과분 디스크 스필, 출력 바이트 무영향).
- 신규 테스트: 8장 병렬 배치의 순서 보존(results[i]↔sources[i]) + 전수 변환 검증.

71개 테스트 전부 그린(골든마스터 동일성 유지), 빌드 0경고/0오류.
⚠ 진행률 UX(완료 건수 모델) 변경 — GUI 스모크 권장.
2026-06-02 09:43:20 +09:00
..
Everything2Everything.App refactor(P4): ConvertOptions God Object → 불변 record (init-only) 2026-06-02 09:40:07 +09:00
Everything2Everything.Core refactor(P6): Independent 배치 병렬화 + Magick ResourceLimits (즉효 최적화) 2026-06-02 09:43:20 +09:00
Everything2Everything.Shell feat(shell): 입력 형식별 추천 출력 — 영상→영상/오디오, 데이터→데이터 2026-06-01 18:11:04 +09:00
Everything2Everything.Tests refactor(P6): Independent 배치 병렬화 + Magick ResourceLimits (즉효 최적화) 2026-06-02 09:43:20 +09:00
Directory.Packages.props refactor(P2): DI 컴포지션 루트 + Scrutor 어셈블리 스캔 자동등록 2026-06-01 23:30:06 +09:00