[]
        
(Showing Draft Content)

성능 및 계산

대규모 SJS.TABLE 수식은 각 입력 조합에 대해 여러 시뮬레이션을 수행하므로 다시 계산 시간이 크게 증가할 수 있습니다.

SpreadJS는 성능 관리를 위해 계산 모드와 진행률 이벤트를 제공합니다.

계산 모드

기본적으로 SpreadJS는 종속 데이터가 변경되면 모든 수식을 자동으로 다시 계산합니다.

대규모 데이터 표가 포함된 통합 문서의 경우 CalculationMode를 사용하여 계산 동작을 조정할 수 있습니다.

spread.options.calculationMode = GC.Spread.Sheets.CalculationMode.partial;

수동으로 다시 계산을 실행하려면:

spread.calculate();

참고:

  • 부분 모드는 대규모 데이터 표가 포함된 통합 문서를 가져올 때 권장됩니다. 그렇지 않으면 모든 SJS.TABLE 수식이 로드 직후 즉시 다시 계산되어 눈에 띄는 지연이 발생할 수 있습니다.

  • 부분 모드에서는 SJS.TABLE을 제외한 모든 수식이 종속 데이터 변경 시 자동으로 다시 계산됩니다. SJS.TABLE 수식은 spread.calculate()가 호출될 때만 다시 계산됩니다.

계산 진행률 모니터링

SpreadJS는 다시 계산 진행 상태를 보고하기 위해 CalculationProgress 이벤트를 발생시킵니다.

점진적 계산 활성화 (일반 수식)

일반 수식 다시 계산의 경우 점진적 계산이 활성화되면 진행률 보고를 사용할 수 있습니다.

spread.options.incrementalCalculation = true;

활성화되면 CalculationProgress 이벤트는 다음 정보를 보고합니다.

  • totalCells

  • pendingCells

  • iterate (반복 계산용)

SJS.TABLE 진행률 보고

SJS.TABLE은 전용 진행률 보고 동작을 제공합니다.

이벤트 발생

SJS.TABLE 평가 중에는 CalculationProgress 이벤트가 다음과 같이 발생합니다.

  • incrementalCalculation이 활성화되지 않은 경우에도 발생

  • 일반 수식 계산 진행률과 독립적으로 발생

통합 문서에 SJS.TABLE이 포함되어 있으면 이벤트는 다음과 같이 발생합니다.

  1. SJS.TABLE이 계산 대상으로 감지되면 dataTableProgress: 0과 함께 이벤트가 발생합니다.

  2. 평가가 진행되는 동안 이벤트는 계속 발생하며 dataTableProgress 값을 제공합니다.

이 값은 데이터 표 계산의 진행 상태를 나타냅니다.

이벤트 페이로드 동작

SJS.TABLE이 평가되는 동안:

  • 이벤트 페이로드에는 dataTableProgress가 포함됩니다.

  • totalCells, pendingCells, iterate와 같은 다른 진행률 필드는 포함되지 않습니다.

dataTableProgress는 데이터 표 계산의 완료 비율을 나타냅니다.

예제

spread.bind(
  GC.Spread.Sheets.Events.CalculationProgress,
  function (e, info) {
    if (info.dataTableProgress !== undefined) {
      console.log(
        "Data Table: " +
        (info.dataTableProgress * 100).toFixed(0) + "%"
      );
      return;
    }

    if (info.pendingCells === 0) {
      console.log("Calculation finished");
    }
  }
);

이러한 분리는 대규모 SJS.TABLE 시뮬레이션이 과도한 일반 계산 완료 알림을 생성하지 않도록 하면서도 데이터 표 계산에 대한 명확한 진행률 정보를 제공합니다.

상태 표시줄 표시기

SJS.TABLE 계산 중에는 기본 제공 SpreadJS 상태 표시줄에 다음과 같이 자동으로 표시됩니다.

Data Table: x%

별도의 설정은 필요하지 않습니다. 이를 통해 데이터 표 계산이 진행 중임을 시각적으로 확인할 수 있습니다.

image-20260420.5ca791.png