Skip to content

Commit 562884c

Browse files
committed
ManualMapper refactoring to keep the first place
1 parent d2f7008 commit 562884c

File tree

6 files changed

+44
-52
lines changed

6 files changed

+44
-52
lines changed

benchmark.plt

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ set style line 2 lc rgb '#808080' lt 1
2828
set border 3 back ls 2
2929
set tics nomirror
3030

31-
plot 'results.csv' every ::1 using 0:5:xticlabels(stringcolumn(1)[41:60]) with boxes ls 1,\
31+
plot 'results.csv' every ::1 using 0:5:xticlabels(8) with boxes ls 1,\
3232
'results.csv' every ::1 using 0:($5 + 1500):(sprintf("%d",$5)) with labels offset char 0,1

readme.md

+14-10
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ It includes combinations which usually appear in Java Beans, such as:
3636

3737
## Launch the benchmark
3838

39-
_Pre-requisites: Maven 3.x and a JDK 6 (or above)_
39+
_Pre-requisites: Maven 3.x and a JDK 7 (or above)_
4040

4141
``git clone git://github.com/arey/java-object-mapper-benchmark.git``
4242

@@ -65,28 +65,32 @@ Tests has been performed on:
6565
<th>Benchmark</th><th>Mode</th><th>Samples</th><th>Score</th><th>Margin error (+/-)</th><th>Units</th>
6666
</tr>
6767
<tr>
68-
<th>Manual</th><td>thrpt</td><td>200</td><td>18 047 670</td><td>70 665</td><td>ops/s</td>
69-
</tr>
70-
<tr>
71-
<th>Selma</th><td>thrpt</td><td>200</td><td>16 467 211</td><td>63 445</td><td>ops/s</td>
68+
<th>Manual</th><td>thrpt</td><td>200</td><td>27 598 750</td><td>346 265</td><td>ops/s</td>
7269
</tr>
7370
<tr>
74-
<th>MapStruct</th><td>thrpt</td><td>200</td><td>15 266 378</td><td>125 660</td><td>ops/s</td>
71+
<th>MapStruct</th><td>thrpt</td><td>200</td><td>27 206 021</td><td>133 009</td><td>ops/s</td>
72+
</tr>
73+
<tr>
74+
<th>Selma</th><td>thrpt</td><td>200</td><td>26 205 612</td><td>185 326</td><td>ops/s</td>
7575
</tr>
7676
<tr>
77-
<th>JMapper</th><td>thrpt</td><td>200</td><td>15 487 461</td><td>119 421</td><td>ops/s</td>
77+
<th>JMapper</th><td>thrpt</td><td>200</td><td>23 377 962</td><td>124 537</td><td>ops/s</td>
7878
</tr>
7979
<tr>
80-
<th>Orika</th><td>thrpt</td><td>200</td><td>3 522 891</td><td>40 734</td><td>ops/s</td>
80+
<th>Orika</th><td>thrpt</td><td>200</td><td>4 097 030</td><td>21 220</td><td>ops/s</td>
8181
</tr>
8282
<tr>
83-
<th>ModelMaper</th><td>thrpt</td><td>200</td><td>253 658</td><td>2 197</td><td>ops/s</td>
83+
<th>ModelMaper</th><td>thrpt</td><td>200</td><td>323 791</td><td>3 172</td><td>ops/s</td>
8484
</tr>
8585
<tr>
86-
<th>Dozer</th><td>thrpt</td><td>200</td><td>83 274</td><td>724</td><td>ops/s</td>
86+
<th>Dozer</th><td>thrpt</td><td>200</td><td>84 113</td><td>331</td><td>ops/s</td>
8787
</tr>
8888
</table>
8989

90+
91+
"Benchmark","Mode","Threads","Samples","Score","Score Error (99,9%)","Unit","Param: type"
92+
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,200,"26095841,101453","245410,911251","ops/s",Selma
93+
9094
![Framework Comparison](results.png)
9195

9296

results.csv

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"Benchmark","Mode","Threads","Samples","Score","Score Error (99,9%)","Unit","Param: type"
2-
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,5,"60674,682344","866,863148","ops/s",DozerMapper
3-
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,5,"22157250,519310","126894,016482","ops/s",JMapperMapper
4-
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,5,"28151869,510388","743117,415160","ops/s",ManualMapper
5-
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,5,"24391686,608522","381298,226400","ops/s",MapStructMapper
6-
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,5,"200161,330064","3685,229185","ops/s",ModelMapper
7-
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,5,"2617240,822837","20547,290629","ops/s",OrikaMapper
8-
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,5,"26874373,657715","112287,003423","ops/s",SelmaMapper
2+
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,200,"27598750,161992","346265,704225","ops/s",Manual
3+
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,200,"27206021,062526","133009,298251","ops/s",MapStruct
4+
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,200,"26205612,876587","185326,677688","ops/s",Selma
5+
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,200,"23377962,917915","124537,993554","ops/s",JMapper
6+
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,200,"4097030,344104","21220,567480","ops/s",Orika
7+
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,200,"323791,972104","3172,754252","ops/s",ModelMapper
8+
"com.javaetmoi.benchmark.MapperBenchmark.mapper","thrpt",1,200,"84113,220613","331,664883","ops/s",Dozer

results.png

-278 Bytes
Loading

src/main/java/com/javaetmoi/benchmark/MapperBenchmark.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
@State(Scope.Benchmark)
2828
public class MapperBenchmark {
2929

30-
@Param({"DozerMapper", "JMapperMapper", "ManualMapper", "MapStructMapper", "ModelMapper", "OrikaMapper", "SelmaMapper"})
30+
@Param({"Manual", "MapStruct", "Selma", "JMapper", "Orika", "ModelMapper", "Dozer"})
3131
private String type;
3232

3333
private OrderMapper mapper;
@@ -36,25 +36,25 @@ public class MapperBenchmark {
3636
@Setup(Level.Trial)
3737
public void setup(){
3838
switch (type) {
39-
case "DozerMapper":
39+
case "Dozer":
4040
mapper = new DozerMapper();
4141
break;
42-
case "OrikaMapper":
42+
case "Orika":
4343
mapper = new OrikaMapper();
4444
break;
4545
case "ModelMapper":
4646
mapper = new ModelMapper();
4747
break;
48-
case "MapStructMapper":
48+
case "MapStruct":
4949
mapper = new MapStructMapper();
5050
break;
51-
case "SelmaMapper":
51+
case "Selma":
5252
mapper = new SelmaMapper();
5353
break;
54-
case "JMapperMapper":
54+
case "JMapper":
5555
mapper = new JMapperMapper();
5656
break;
57-
case "ManualMapper":
57+
case "Manual":
5858
mapper = new ManualMapper();
5959
break;
6060
default:

src/main/java/com/javaetmoi/benchmark/mapping/mapper/manual/ManualMapper.java

+15-27
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,23 @@ public OrderDTO map(Order source) {
2020
Customer customer = source.getCustomer();
2121
if (customer != null) {
2222
target.setCustomerName(customer.getName());
23-
mapBillingAddress(target, customer.getBillingAddress());
24-
mapShippingAddress(target, customer.getShippingAddress());
23+
if (customer.getBillingAddress() != null) {
24+
target.setBillingCity(customer.getBillingAddress().getCity());
25+
target.setBillingStreetAddress(customer.getBillingAddress().getStreet());
26+
}
27+
if (customer.getShippingAddress() != null) {
28+
target.setShippingCity(customer.getShippingAddress().getCity());
29+
target.setShippingStreetAddress(customer.getShippingAddress().getStreet());
30+
}
2531
}
26-
mapProducts(source, target);
27-
return target;
28-
}
29-
30-
private void mapShippingAddress(OrderDTO target, Address shippingAddress) {
31-
if (shippingAddress != null) {
32-
target.setShippingCity(shippingAddress.getCity());
33-
target.setShippingStreetAddress(shippingAddress.getStreet());
34-
}
35-
}
36-
37-
private void mapBillingAddress(OrderDTO target, Address billingAddress) {
38-
if (billingAddress != null) {
39-
target.setBillingCity(billingAddress.getCity());
40-
target.setBillingStreetAddress(billingAddress.getStreet());
32+
if (source.getProducts() != null) {
33+
List<ProductDTO> targetProducts = new ArrayList<ProductDTO>(source.getProducts().size());
34+
for (Product product : source.getProducts()) {
35+
targetProducts.add(new ProductDTO(product.getName()));
36+
}
37+
target.setProducts(targetProducts);
4138
}
39+
return target;
4240
}
4341

44-
private void mapProducts(Order source, OrderDTO target) {
45-
if (source.getProducts() == null) {
46-
return;
47-
}
48-
List<ProductDTO> targetProducts = new ArrayList<ProductDTO>(source.getProducts().size());
49-
for (Product product : source.getProducts()) {
50-
targetProducts.add(new ProductDTO(product.getName()));
51-
}
52-
target.setProducts(targetProducts);
53-
}
5442
}

0 commit comments

Comments
 (0)