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