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 }