테스트 환경 공통

- 제외
IO작업 제외
celper를 제외한 나머지 모듈 Style 삽입 제외

- 환경
CPU Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz   1.80 GHz
RAM 8.00GB
최초 힙사이즈 -Xms1G
최대 힙사이즈 -Xmx4G

- 횟수
warmup 5회
실제 동작 측정 10회
결과물 산출 (평균동작시간/초)

- 데이터 크기
데이터 사이즈(Row) 10_000 | 100_000 | 1_000_000 순으로 증가하면서 테스트
데이터 사이즈(column) 30 고정
최종 건수 cell (건) = Row X column 
		**300_000 = 30 X 10_000 (가장 많이 쓸 것으로 예상되는 범위)**

		3_000_000 = 30 X 100_000 (일반적으로 가능한 범위)

		**30_000_000 = 30 X 1_000_000 (한계치)**

- 테스트 도구
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.4.0</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.openjdk.jmh</groupId>
    <artifactId>jmh-core</artifactId>
    <version>1.21</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.openjdk.jmh</groupId>
    <artifactId>jmh-generator-annprocess</artifactId>
    <version>1.21</version>
    <scope>test</scope>
</dependency>

<aside> 💡 최초에서 최대까지의 범위를 넓게 잡은 이유는 SXSSF의 경우 캐싱을 하여 사용해서 대용량을 처리할 수 있게 했지만, XSSF의 경우 캐싱을 하지 못해서 모든 데이터를 메모리에 들고 있다. 이 때문에 out of memory가 발생함

</aside>

<aside> 💡 HSSF= xls= 2003 년도 이전 엑셀 버전 지원 목적 XSSF= xlsx = 2007 년도 이후 엑셀 버전 지원 목적 SXSSF = xlsx= XSSF의 성능 개선 버전

</aside>


결과

<aside> 💡 데이터 모델은 실제로 존재할 수 있고 구현해야 하는 필요성을 바탕으로 제작했습니다. 예로 학사 정보 시스템에서 엑셀 다운로드를 구현해야 한다면 필요한 정보들을 생각하여 만들었습니다.

</aside>


Celper, POI로 직접 구현했을 때 시간 비교 (SXSSF 기준)

요약
**- 300_000 건**
Benchmark                                          Mode  Cnt          Score          Error   Units
JMHTest.celperLoad                                 avgt   10          0.282 ±        0.041    s/op
JMHTest.originalLoad                               avgt   10          0.220 ±        0.037    s/op

**- 3_000_000 건**
Benchmark                                          Mode  Cnt          Score          Error   Units
JMHTest.celperLoad                                 avgt   10          2.847 ±        0.408    s/op
JMHTest.originalLoad                               avgt   10          2.271 ±        0.113    s/op

**- 30_000_000 건**

Benchmark                                          Mode  Cnt          Score          Error   Units
JMHTest.celperLoad                                 avgt   10          25.089 ±       2.112    s/op
JMHTest.originalLoad                               avgt   10          25.326 ±       3.385    s/op

Celper, ToExcel(다우기술, 카카오) 시간 비교 (XSSF기준, 단일 테스트)

요약
**- 300_000 건**
Benchmark                                          Mode  Cnt           Score         Error   Units
JMHTest.celperLoad                                 avgt   10           1.848 ±       0.160    s/op
JMHTest.toExcelLoad                                avgt   10           2.576 ±       1.192    s/op

**- 3_000_000 건**
Benchmark                                          Mode  Cnt          Score          Error   Units
JMHTest.celperLoad                                 avgt   10          21.522 ±       3.679    s/op
JMHTest.toExcelLoad                                avgt   10          28.716 ±       5.791    s/op

**- 30_000_000 건 - (테스트 불가 컴퓨터 성능 한계 및 현실적으로 1분 이상되는 기능은 비기능적 사항 오류)**

Celper, excel-download(배달의 민족) 시간 비교 (SXSSF기준, 단일 테스트)