1
+ package com .baeldung .poi .benchmark ;
2
+
3
+ import java .io .IOException ;
4
+ import java .util .concurrent .TimeUnit ;
5
+
6
+ import org .apache .poi .hssf .usermodel .HSSFWorkbook ;
7
+ import org .apache .poi .ss .usermodel .Cell ;
8
+ import org .apache .poi .ss .usermodel .Row ;
9
+ import org .apache .poi .ss .usermodel .Sheet ;
10
+ import org .apache .poi .ss .usermodel .Workbook ;
11
+ import org .apache .poi .xssf .streaming .SXSSFWorkbook ;
12
+ import org .apache .poi .xssf .usermodel .XSSFWorkbook ;
13
+ import org .openjdk .jmh .annotations .*;
14
+ import org .openjdk .jmh .infra .Blackhole ;
15
+ import org .openjdk .jmh .profile .MemPoolProfiler ;
16
+ import org .openjdk .jmh .runner .Runner ;
17
+ import org .openjdk .jmh .runner .options .Options ;
18
+ import org .openjdk .jmh .runner .options .OptionsBuilder ;
19
+
20
+ @ State (Scope .Benchmark )
21
+ @ BenchmarkMode (Mode .AverageTime )
22
+ @ Warmup (iterations = 1 , time = 2 )
23
+ @ Measurement (iterations = 3 , time = 1 )
24
+ @ OutputTimeUnit (TimeUnit .MILLISECONDS )
25
+ @ Fork (value = 1 )
26
+ public class WorkbookBenchmark
27
+ {
28
+
29
+ @ Benchmark
30
+ public static void write2500RowsToHSSFWorkbook (Blackhole blackhole ) throws IOException {
31
+ writeRowsToWorkbook (new HSSFWorkbook (), 2500 , blackhole );
32
+ }
33
+
34
+ @ Benchmark
35
+ public static void write5000RowsToHSSFWorkbook (Blackhole blackhole ) throws IOException {
36
+ writeRowsToWorkbook (new HSSFWorkbook (), 5000 , blackhole );
37
+ }
38
+
39
+ @ Benchmark
40
+ public static void write10000RowsToHSSFWorkbook (Blackhole blackhole ) throws IOException {
41
+ writeRowsToWorkbook (new HSSFWorkbook (), 10000 , blackhole );
42
+ }
43
+
44
+ @ Benchmark
45
+ public static void write20000RowsToHSSFWorkbook (Blackhole blackhole ) throws IOException {
46
+ writeRowsToWorkbook (new HSSFWorkbook (), 20000 , blackhole );
47
+ }
48
+
49
+ @ Benchmark
50
+ public static void write40000RowsToHSSFWorkbook (Blackhole blackhole ) throws IOException {
51
+ writeRowsToWorkbook (new HSSFWorkbook (), 40000 , blackhole );
52
+ }
53
+
54
+ @ Benchmark
55
+ public static void write2500RowsToXSSFWorkbook (Blackhole blackhole ) throws IOException {
56
+ writeRowsToWorkbook (new XSSFWorkbook (), 2500 , blackhole );
57
+ }
58
+
59
+ @ Benchmark
60
+ public static void write5000RowsToXSSFWorkbook (Blackhole blackhole ) throws IOException {
61
+ writeRowsToWorkbook (new XSSFWorkbook (), 5000 , blackhole );
62
+ }
63
+
64
+ @ Benchmark
65
+ public static void write10000RowsToXSSFWorkbook (Blackhole blackhole ) throws IOException {
66
+ writeRowsToWorkbook (new XSSFWorkbook (), 10000 , blackhole );
67
+ }
68
+
69
+ @ Benchmark
70
+ public static void write20000RowsToXSSFWorkbook (Blackhole blackhole ) throws IOException {
71
+ writeRowsToWorkbook (new XSSFWorkbook (), 20000 , blackhole );
72
+ }
73
+
74
+ @ Benchmark
75
+ public static void write40000RowsToXSSFWorkbook (Blackhole blackhole ) throws IOException {
76
+ writeRowsToWorkbook (new XSSFWorkbook (), 40000 , blackhole );
77
+ }
78
+
79
+ @ Benchmark
80
+ public static void write2500RowsToSXSSFWorkbook (Blackhole blackhole ) throws IOException {
81
+ writeRowsToWorkbook (new SXSSFWorkbook (), 2500 , blackhole );
82
+ }
83
+
84
+ @ Benchmark
85
+ public static void write5000RowsToSXSSFWorkbook (Blackhole blackhole ) throws IOException {
86
+ writeRowsToWorkbook (new SXSSFWorkbook (), 5000 , blackhole );
87
+ }
88
+
89
+ @ Benchmark
90
+ public static void write10000RowsToSXSSFWorkbook (Blackhole blackhole ) throws IOException {
91
+ writeRowsToWorkbook (getSXSSFWorkbook (), 10000 , blackhole );
92
+ }
93
+
94
+ @ Benchmark
95
+ public static void write20000RowsToSXSSFWorkbook (Blackhole blackhole ) throws IOException {
96
+ writeRowsToWorkbook (getSXSSFWorkbook (), 20000 , blackhole );
97
+ }
98
+
99
+ @ Benchmark
100
+ public static void write40000RowsToSXSSFWorkbook (Blackhole blackhole ) throws IOException {
101
+ writeRowsToWorkbook (getSXSSFWorkbook (), 40000 , blackhole );
102
+ }
103
+
104
+ private static SXSSFWorkbook getSXSSFWorkbook () {
105
+ SXSSFWorkbook workbook = new SXSSFWorkbook ();
106
+ workbook .setCompressTempFiles (true );
107
+ return workbook ;
108
+ }
109
+
110
+ public static void writeRowsToWorkbook (Workbook workbook , int iterations , Blackhole blackhole ) throws IOException {
111
+ Sheet sheet = workbook .createSheet ();
112
+ for (int n =0 ;n <iterations ;n ++) {
113
+ Row row = sheet .createRow (sheet .getLastRowNum ()+1 );
114
+ for (int c =0 ;c <256 ;c ++) {
115
+ Cell cell = row .createCell (c );
116
+ cell .setCellValue ("abcdefghijklmnopqrstuvwxyz" );
117
+ }
118
+ }
119
+ workbook .close ();
120
+ blackhole .consume (workbook );
121
+ }
122
+
123
+ public static void main (String [] args ) throws Exception {
124
+ Options options = new OptionsBuilder ()
125
+ .include (WorkbookBenchmark .class .getSimpleName ()).threads (1 )
126
+ .shouldFailOnError (true )
127
+ .shouldDoGC (true )
128
+ .addProfiler (MemPoolProfiler .class )
129
+ .jvmArgs ("-server" ).build ();
130
+ new Runner (options ).run ();
131
+ }
132
+
133
+ }
0 commit comments