1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.supercsv.benchmark;
17
18 import static org.junit.Assert.assertEquals;
19
20 import java.io.Writer;
21 import java.util.List;
22 import java.util.Map;
23
24 import org.supercsv.cellprocessor.ift.CellProcessor;
25 import org.supercsv.io.CsvBeanWriter;
26 import org.supercsv.io.CsvListWriter;
27 import org.supercsv.io.CsvMapWriter;
28 import org.supercsv.io.ICsvBeanWriter;
29 import org.supercsv.io.ICsvListWriter;
30 import org.supercsv.io.ICsvMapWriter;
31 import org.supercsv.io.dozer.CsvDozerBeanWriter;
32 import org.supercsv.io.dozer.ICsvDozerBeanWriter;
33 import org.supercsv.prefs.CsvPreference;
34
35 import com.carrotsearch.junitbenchmarks.AbstractBenchmark;
36
37
38
39
40
41
42
43
44
45
46
47
48
49 public class AbstractCsvWritingBenchmark extends AbstractBenchmark {
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 public void timeCsvListWriter(final Writer writer,
67 final CsvPreference preference, final String[] header,
68 final List<List<Object>> data, final int rows) throws Exception {
69
70 ICsvListWriter listWriter = null;
71 try {
72 listWriter = new CsvListWriter(writer, preference);
73 listWriter.writeHeader(header);
74
75 for (List<?> row : data) {
76 listWriter.write(row);
77 }
78
79 assertEquals(rows + 1, listWriter.getRowNumber());
80
81 } finally {
82 listWriter.close();
83 }
84
85 }
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 public void timeCsvListWriterUsingProcessors(final Writer writer,
105 final CsvPreference preference, final String[] header,
106 final List<List<Object>> data, final CellProcessor[] processors,
107 final int rows) throws Exception {
108
109 ICsvListWriter listWriter = null;
110 try {
111 listWriter = new CsvListWriter(writer, preference);
112 listWriter.writeHeader(header);
113
114 for (List<?> row : data) {
115 listWriter.write(row, processors);
116 }
117
118 assertEquals(rows + 1, listWriter.getRowNumber());
119
120 } finally {
121 listWriter.close();
122 }
123
124 }
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 public void timeCsvMapWriter(final Writer writer,
142 final CsvPreference preference, final String[] header,
143 final List<Map<String, Object>> data, final int rows)
144 throws Exception {
145
146 ICsvMapWriter mapWriter = null;
147 try {
148 mapWriter = new CsvMapWriter(writer, preference);
149 mapWriter.writeHeader(header);
150
151 for (Map<String, ?> map : data) {
152 mapWriter.write(map, header);
153 }
154
155 assertEquals(rows + 1, mapWriter.getRowNumber());
156
157 } finally {
158 mapWriter.close();
159 }
160 }
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179 public void timeCsvMapWriterUsingProcessors(final Writer writer,
180 final CsvPreference preference, final String[] header,
181 final List<Map<String, Object>> data,
182 final CellProcessor[] processors, final int rows) throws Exception {
183
184 ICsvMapWriter mapWriter = null;
185 try {
186 mapWriter = new CsvMapWriter(writer, preference);
187 mapWriter.writeHeader(header);
188
189 for (Map<String, ?> map : data) {
190 mapWriter.write(map, header, processors);
191 }
192
193 assertEquals(rows + 1, mapWriter.getRowNumber());
194
195 } finally {
196 mapWriter.close();
197 }
198 }
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215 public void timeCsvBeanWriter(final Writer writer,
216 final CsvPreference preference, final String[] header,
217 final List<?> data, final int rows) throws Exception {
218 ICsvBeanWriter beanWriter = null;
219 try {
220 beanWriter = new CsvBeanWriter(writer, preference);
221 beanWriter.writeHeader(header);
222
223 for (Object o : data) {
224 beanWriter.write(o, header);
225 }
226
227 assertEquals(rows + 1, beanWriter.getRowNumber());
228
229 } finally {
230 beanWriter.close();
231 }
232 }
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251 public void timeCsvBeanWriterUsingProcessors(final Writer writer,
252 final CsvPreference preference, final String[] header,
253 final List<?> data, final CellProcessor[] processors, final int rows)
254 throws Exception {
255
256 ICsvBeanWriter beanWriter = null;
257 try {
258 beanWriter = new CsvBeanWriter(writer, preference);
259 beanWriter.writeHeader(header);
260
261 for (Object o : data) {
262 beanWriter.write(o, header, processors);
263 }
264
265 assertEquals(rows + 1, beanWriter.getRowNumber());
266
267 } finally {
268 beanWriter.close();
269 }
270 }
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289 public void timeCsvDozerBeanWriter(final Writer writer,
290 final CsvPreference preference, final String[] header,
291 final Class<?> beanClass, final List<?> data, final int rows)
292 throws Exception {
293
294 ICsvDozerBeanWriter dozerBeanWriter = null;
295 try {
296 dozerBeanWriter = new CsvDozerBeanWriter(writer, preference);
297 dozerBeanWriter.writeHeader(header);
298 dozerBeanWriter.configureBeanMapping(beanClass, header);
299
300 for (Object o : data) {
301 dozerBeanWriter.write(o);
302 }
303
304 assertEquals(rows + 1, dozerBeanWriter.getRowNumber());
305
306 } finally {
307 dozerBeanWriter.close();
308 }
309 }
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330 public void timeCsvDozerBeanWriterUsingProcessors(final Writer writer,
331 final CsvPreference preference, final String[] header,
332 final Class<?> beanClass, final List<?> data,
333 final CellProcessor[] processors, final int rows) throws Exception {
334 ICsvDozerBeanWriter dozerBeanWriter = null;
335 try {
336 dozerBeanWriter = new CsvDozerBeanWriter(writer, preference);
337 dozerBeanWriter.writeHeader(header);
338 dozerBeanWriter.configureBeanMapping(beanClass, header);
339
340 for (Object o : data) {
341 dozerBeanWriter.write(o, processors);
342 }
343
344 assertEquals(rows + 1, dozerBeanWriter.getRowNumber());
345
346 } finally {
347 dozerBeanWriter.close();
348 }
349 }
350
351 }