Skip to content

[Perf] TikZ/pgfplots 병렬 외부화 워커 풀 #82

Description

@akcorca

배경

TeX 조판 자체는 순차적이지만 TikZ/pgfplots 그림은 서로 독립이다. 네이티브 환경의 tikzexternalize는 shell-escape가 필요해 브라우저에서 못 쓴다. TikZ 비중이 큰 문서에서 컴파일 시간의 대부분이 그림 조판이다.

제안

전처리 단계에서 외부화를 에뮬레이션한다.

  1. 문법 스냅샷/토크나이저로 tikzpicture (및 \begin{axis} 포함) 환경을 추출한다.
  2. 각 그림을 preamble(관련 \usepackage, \usetikzlibrary, \pgfplotsset, 매크로 정의) + standalone 클래스로 감싼 독립 문서로 만든다.
  3. 워커 풀(코어 수 기반, 2~4개 pdfTeX 워커)에서 병렬 컴파일하고, 결과 PDF를 내용 해시로 캐시한다.
  4. 본문의 그림을 \includegraphics{<hash>.pdf} 로 치환한 뒤 메인 컴파일을 돈다.
  5. 그림 소스나 preamble 해시가 바뀐 그림만 재컴파일한다.

폴백: 추출 실패, 외부 매크로/카운터 의존(\ref 등), 컴파일 실패 시 해당 그림은 인라인으로 남긴다. 결과가 인라인과 달라질 수 있는 케이스(페이지 스타일 의존, remember picture/overlay)는 외부화 대상에서 제외한다.

측정

  • 벤치 문서: TikZ 그림 10개 + pgfplots 5개짜리 article. cold/warm, 그림 1개 편집 시 지연.
  • 워커 수 1/2/4 별 벽시계 시간과 메모리 피크.
  • 외부화 결과와 인라인 결과의 시각 동일성(래스터 diff) 검사.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions