1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.beanutils2;
19
20 import java.util.HashMap;
21 import java.util.Iterator;
22 import java.util.Map;
23
24 import org.junit.jupiter.api.AfterEach;
25 import org.junit.jupiter.api.BeforeEach;
26 import org.junit.jupiter.api.Test;
27
28
29
30
31 public class BeanUtilsBenchCase {
32
33
34 private long counter = 100000;
35
36
37 private DynaClass dynaClass;
38
39
40 private BenchBean inBean;
41 private DynaBean inDyna;
42 private Map<String, Object> inMap;
43 private Map<String, String> inStrs;
44
45
46 private BenchBean outBean;
47 private DynaBean outDyna;
48
49
50 private BeanUtilsBean bu;
51
52
53
54
55 @BeforeEach
56 public void setUp() throws Exception {
57
58
59 final String prop = System.getProperty("counter");
60 if (prop != null) {
61 counter = Long.parseLong(prop);
62 }
63
64
65 dynaClass = new BasicDynaClass("BenchDynaClass", null,
66 new DynaProperty[] { new DynaProperty("booleanProperty", Boolean.TYPE), new DynaProperty("byteProperty", Byte.TYPE),
67 new DynaProperty("doubleProperty", Double.TYPE), new DynaProperty("floatProperty", Float.TYPE),
68 new DynaProperty("intProperty", Integer.TYPE), new DynaProperty("longProperty", Long.TYPE),
69 new DynaProperty("shortProperty", Short.TYPE), new DynaProperty("stringProperty", String.class), });
70
71
72 inBean = new BenchBean();
73 inMap = new HashMap<>();
74 inMap.put("booleanProperty", Boolean.valueOf(inBean.getBooleanProperty()));
75 inMap.put("byteProperty", Byte.valueOf(inBean.getByteProperty()));
76 inMap.put("doubleProperty", Double.valueOf(inBean.getDoubleProperty()));
77 inMap.put("floatProperty", Float.valueOf(inBean.getFloatProperty()));
78 inMap.put("intProperty", Integer.valueOf(inBean.getIntProperty()));
79 inMap.put("longProperty", Long.valueOf(inBean.getLongProperty()));
80 inMap.put("shortProperty", Short.valueOf(inBean.getShortProperty()));
81 inMap.put("stringProperty", inBean.getStringProperty());
82 inDyna = dynaClass.newInstance();
83 Iterator<String> inKeys = inMap.keySet().iterator();
84 while (inKeys.hasNext()) {
85 final String inKey = inKeys.next();
86 inDyna.set(inKey, inMap.get(inKey));
87 }
88 inStrs = new HashMap<>();
89 inKeys = inMap.keySet().iterator();
90 while (inKeys.hasNext()) {
91 final String inKey = inKeys.next();
92 inStrs.put(inKey, inMap.get(inKey).toString());
93 }
94
95
96 outBean = new BenchBean();
97 outDyna = dynaClass.newInstance();
98 for (final String outKey : inMap.keySet()) {
99 outDyna.set(outKey, inMap.get(outKey));
100 }
101
102
103 bu = BeanUtilsBean.getInstance();
104
105 }
106
107
108
109
110 @AfterEach
111 public void tearDown() {
112 dynaClass = null;
113 inBean = null;
114 inDyna = null;
115 inMap = null;
116 outBean = null;
117 outDyna = null;
118 bu = null;
119 }
120
121
122 @Test
123 public void testCopyPropertiesBean() throws Exception {
124
125 long startMillis;
126 long stopMillis;
127
128
129 for (long i = 0; i < counter; i++) {
130 bu.copyProperties(outBean, inBean);
131 }
132 startMillis = System.currentTimeMillis();
133 for (long i = 0; i < counter; i++) {
134 bu.copyProperties(outBean, inBean);
135 }
136 stopMillis = System.currentTimeMillis();
137 System.err.println("BU.copyProperties(bean,bean), count=" + counter + ", time=" + (stopMillis - startMillis));
138
139
140 for (long i = 0; i < counter; i++) {
141 bu.copyProperties(outDyna, inBean);
142 }
143 startMillis = System.currentTimeMillis();
144 for (long i = 0; i < counter; i++) {
145 bu.copyProperties(outDyna, inBean);
146 }
147 stopMillis = System.currentTimeMillis();
148 System.err.println("BU.copyProperties(dyna,bean), count=" + counter + ", time=" + (stopMillis - startMillis));
149
150 }
151
152
153 @Test
154 public void testCopyPropertiesDyna() throws Exception {
155
156 long startMillis;
157 long stopMillis;
158
159
160 for (long i = 0; i < counter; i++) {
161 bu.copyProperties(outBean, inDyna);
162 }
163 startMillis = System.currentTimeMillis();
164 for (long i = 0; i < counter; i++) {
165 bu.copyProperties(outBean, inDyna);
166 }
167 stopMillis = System.currentTimeMillis();
168 System.err.println("BU.copyProperties(bean,dyna), count=" + counter + ", time=" + (stopMillis - startMillis));
169
170
171 for (long i = 0; i < counter; i++) {
172 bu.copyProperties(outDyna, inDyna);
173 }
174 startMillis = System.currentTimeMillis();
175 for (long i = 0; i < counter; i++) {
176 bu.copyProperties(outDyna, inDyna);
177 }
178 stopMillis = System.currentTimeMillis();
179 System.err.println("BU.copyProperties(dyna,dyna), count=" + counter + ", time=" + (stopMillis - startMillis));
180
181 }
182
183
184 @Test
185 public void testCopyPropertiesMap() throws Exception {
186
187 long startMillis;
188 long stopMillis;
189
190
191 for (long i = 0; i < counter; i++) {
192 bu.copyProperties(outBean, inMap);
193 }
194 startMillis = System.currentTimeMillis();
195 for (long i = 0; i < counter; i++) {
196 bu.copyProperties(outBean, inMap);
197 }
198 stopMillis = System.currentTimeMillis();
199 System.err.println("BU.copyProperties(bean, map), count=" + counter + ", time=" + (stopMillis - startMillis));
200
201
202 for (long i = 0; i < counter; i++) {
203 bu.copyProperties(outDyna, inMap);
204 }
205 startMillis = System.currentTimeMillis();
206 for (long i = 0; i < counter; i++) {
207 bu.copyProperties(outDyna, inMap);
208 }
209 stopMillis = System.currentTimeMillis();
210 System.err.println("BU.copyProperties(dyna, map), count=" + counter + ", time=" + (stopMillis - startMillis));
211
212 }
213
214
215 @Test
216 public void testCopyPropertiesStrs() throws Exception {
217
218 long startMillis;
219 long stopMillis;
220
221
222 for (long i = 0; i < counter; i++) {
223 bu.copyProperties(outBean, inStrs);
224 }
225 startMillis = System.currentTimeMillis();
226 for (long i = 0; i < counter; i++) {
227 bu.copyProperties(outBean, inStrs);
228 }
229 stopMillis = System.currentTimeMillis();
230 System.err.println("BU.copyProperties(bean,strs), count=" + counter + ", time=" + (stopMillis - startMillis));
231
232
233 for (long i = 0; i < counter; i++) {
234 bu.copyProperties(outDyna, inStrs);
235 }
236 startMillis = System.currentTimeMillis();
237 for (long i = 0; i < counter; i++) {
238 bu.copyProperties(outDyna, inStrs);
239 }
240 stopMillis = System.currentTimeMillis();
241 System.err.println("BU.copyProperties(dyna,strs), count=" + counter + ", time=" + (stopMillis - startMillis));
242
243 }
244
245
246 @Test
247 public void testPopulateMap() throws Exception {
248
249 long startMillis;
250 long stop;
251
252
253 for (long i = 0; i < counter; i++) {
254 bu.populate(outBean, inMap);
255 }
256 startMillis = System.currentTimeMillis();
257 for (long i = 0; i < counter; i++) {
258 bu.populate(outBean, inMap);
259 }
260 stop = System.currentTimeMillis();
261 System.err.println("BU.populate(bean, map), count=" + counter + ", time=" + (stop - startMillis));
262
263
264 for (long i = 0; i < counter; i++) {
265 bu.populate(outDyna, inMap);
266 }
267 startMillis = System.currentTimeMillis();
268 for (long i = 0; i < counter; i++) {
269 bu.populate(outDyna, inMap);
270 }
271 stop = System.currentTimeMillis();
272 System.err.println("BU.populate(dyna, map), count=" + counter + ", time=" + (stop - startMillis));
273
274 }
275
276
277
278 @Test
279 public void testPopulateStrs() throws Exception {
280
281 long startMillis;
282 long stop;
283
284
285 for (long i = 0; i < counter; i++) {
286 bu.populate(outBean, inStrs);
287 }
288 startMillis = System.currentTimeMillis();
289 for (long i = 0; i < counter; i++) {
290 bu.populate(outBean, inStrs);
291 }
292 stop = System.currentTimeMillis();
293 System.err.println("BU.populate(bean,strs), count=" + counter + ", time=" + (stop - startMillis));
294
295
296 for (long i = 0; i < counter; i++) {
297 bu.populate(outDyna, inStrs);
298 }
299 startMillis = System.currentTimeMillis();
300 for (long i = 0; i < counter; i++) {
301 bu.populate(outDyna, inStrs);
302 }
303 stop = System.currentTimeMillis();
304 System.err.println("BU.populate(dyna,strs), count=" + counter + ", time=" + (stop - startMillis));
305
306 }
307
308 }