1 | /* |
2 | * Packer_unpacker_benchmark_test.hpp |
3 | * |
4 | * Created on: Nov 20, 2016 |
5 | * Author: yaroslav |
6 | */ |
7 | |
8 | #ifndef OPENFPM_DATA_SRC_PACKER_UNPACKER_PACKER_UNPACKER_BENCHMARK_TEST_HPP_ |
9 | #define OPENFPM_DATA_SRC_PACKER_UNPACKER_PACKER_UNPACKER_BENCHMARK_TEST_HPP_ |
10 | |
11 | /* |
12 | * benchmark_test.hpp |
13 | * |
14 | * Created on: Nov 20, 2016 |
15 | * Author: yaroslav |
16 | */ |
17 | |
18 | BOOST_AUTO_TEST_SUITE( packer_unpacker_benchmark_test ) |
19 | |
20 | BOOST_AUTO_TEST_CASE( bm_test ) |
21 | { |
22 | size_t kStringsCount = 100; |
23 | std::string kStringValue = "shgfkghsdfjhgsfjhfgjhfgjsffghgsfdhgsfdfkdjhfioukjhkfdljgdfkgvjafdhasgdfwurtjkghfsdjkfg" ; |
24 | |
25 | openfpm::vector<int64_t> kIntegers = { |
26 | 34492,6603,44033,8874,47607,38416,20395,29192,38620,36775, |
27 | 35058,20501,39664,64574,11261,35679,16607,26020,39476,16699, |
28 | 21505,20947,53587,24746,45980,18827,137,61753,53340,25406, |
29 | 31601,38267,47951,62073,6738,42983,19246,34384,51818,157, |
30 | 628,40807,41177,49445,60677,23663,22312,20616,28922,20389, |
31 | 28543,48407,63986,7216,61601,6647,7956,47434,29257,28162, |
32 | 25582,29941,55019,60580,47503,6662,35851,23648,61464,43188, |
33 | 23519,37727,36778,62597,27203,31950,23796,62866,54914,4507, |
34 | 7775,39256,56141,36388,58687,42619,30909,47784,44209,38712, |
35 | 39387,37342,36743,17467,21181,36301,3918,10068,16204,50558, |
36 | 33633,6164,111,30859,56608,3320,17784,17842,3623,9258, |
37 | 38514,46795,60113,5658,38229,16986,64707,17010,35380,34811, |
38 | 13179,21861,23487,27513,18226,29112,41034,57128,27903,5484, |
39 | 64117,27389,45096,15321,42035,30690,13359,20005,35723,52158, |
40 | 29700,2895,46899,54388,50709,44269,11880,43493,46848,47523, |
41 | 64268,11074,673,62425,10609,21895,65353,51268,30048,8327, |
42 | 15020,13098,8614,9162,44230,34945,49663,35106,37002,13147, |
43 | 23661,47571,58767,27158,58907,18884,29017,49330,21161,20261, |
44 | 22381,57315,11034,39237,35876,52748,52135,3652,5573,11120, |
45 | 35955,16213,32062,32349,26362,7882,39528,40116,378,3620, |
46 | 23121,39308,39836,55477,12003,34089,54450,23870,1952,58445, |
47 | 38567,53959,32265,10354,57972,31510,264,44462,61043,48989, |
48 | 59504,34995,21591,56088,47298,64849,51629,64161,30990,34752, |
49 | 28699,58836,28310,27686,53360,58218,1382,12294,17239,24411, |
50 | 50012,11485,2732,43364,34433,12782,23748,25393,49417,19316, |
51 | 56304,54887,48832,4473,31997,8192,14593,32054,54448,60709, |
52 | 26749,18928,53574,8031,23681,61479,32115,48730,15694,51143, |
53 | 37232,25059,11327,31269,18035,24905,30575,35576,50878,63566, |
54 | 7213,10140,13121,13487,53861,3487,58552,11636,42412,59239, |
55 | 38086,16738,16197,45757,47844,18248,14385,64858,2785,43969, |
56 | 55873,34166,42623,15441,55015,9219,47800,3659,47139,54900, |
57 | 36120,23551,51858,64110,44719,51319,17756,56240,44986,22746, |
58 | 4944,50980,43252,4881,53006,12039,41658,49870,54730,10213, |
59 | 15296,9139,54583,7345,10260,58177,4126,46487,15644,1323, |
60 | 7767,40475,61334,33814,296,4202,58954,60710,47287,17842, |
61 | 62948,40443,16982,64708,45849,58300,16400,20536,38687,3543, |
62 | 14340,17591,37874,58282,12109,61025,17392,4014,39117,40912, |
63 | 24572,39998,57703,4373,28314,27751,11307,43386,28218,4223, |
64 | 10843,46516,48966,472,54111,55663,33428,52509,3845,5647, |
65 | 3164,36542,16868,5700,44693,1240,12757,22308,12715,9024, |
66 | 11999,42661,57211,50848,14944,59955,59208,41264,20033,23019, |
67 | 6368,43478,48738,14758,41280,24076,64014,52013,24937,46899, |
68 | 59046,52457,22428,27505,43159,17779,26304,23403,52731,32394, |
69 | 11878,6003,29789,43818,59314,20329,58069,13081,61424,27718, |
70 | 29996,21610,3205,14477,37523,35003,36286,62906,44191,31058, |
71 | 53068,826,49309,1705,44214,29908,19433,61948,46663,42710, |
72 | 15534,7807,36492,51075,56749,56906,28946,10316,12099,38561, |
73 | 41455,12573,42613,18640,64463,61175,61712,57225,10181,60007, |
74 | 49094,30559,59477,48603,15646,56068,58417,29704,40969,37530, |
75 | 18769,35771,62828,64452,43719,35415,9679,48100,37102,2014, |
76 | 37901,40564,5231,35279,31257,46681,36297,49026,30314,53309, |
77 | 1772,15145,34777,28019,28568,11004,55343,63726,32528,7595, |
78 | 7288,61637,55329,11723,41610,36885,34524,9144,58781,31381, |
79 | 31576,51243,65449,3883,24602,41301,49332,30071,24731,53076, |
80 | 18835,30948,31196,15758,58879,8007,16244,56729,31879,13324, |
81 | 30246,59487,40604,41656,9922,16564,41094,26477,14418,47704, |
82 | 46087,43602,35364,3468,28154,40737,22138,29789,22868,29611, |
83 | 137,18409,26366,11641,24154,33214,53316,54678,56564,6485, |
84 | 63859,30593,23819,63569,40255,28125,3821,58358,26034,27326, |
85 | 20168,39097,34762,3861,54465,48588,41685,9521,42716,60424, |
86 | 61811,64517,55711,28716,5876,16802,43184,32158,12460,33802, |
87 | 43630,57941,65454,57092,23134,1757,42449,56716,47808,31003, |
88 | 52358,59607,60476,14763,48276,61767,52541,15148,59109,60993, |
89 | 8607,56930,13760,52036,4132,61711,4915,59651,11062,750, |
90 | 32426,26748,61727,1006,38136,15828,5934,5901,37067,46827, |
91 | 11884,17393,6322,58799,45596,60370,61443,46045,64246,48987, |
92 | 2765,29446,10923,21875,48410,39056,42986,5562,17903,63126, |
93 | 57165,16031,63190,41857,20363,25337,60583,34165,12117,31144, |
94 | 15233,32201,50866,19101,22325,45683,41215,28885,42919,56843, |
95 | 26045,18702,32409,4802,11310,50435,18268,34070,56862,48307, |
96 | 27179,35722,23159,5270,62523,55928,37842,1469,52744,63149, |
97 | 61265,28590,10318,36834,31225,55332,26967,34844,53898,13550, |
98 | 45088,18743,10663,64974,29124,42159,34634,3895,22055,5649, |
99 | 53895,30439,38264,18351,980,62663,5479,32694,2392,14157, |
100 | 34319,34875,42709,52995,35927,63947,62191,63907,24903,15705, |
101 | 40955,50782,64934,62454,19404,53365,25945,57405,41221,12921, |
102 | 34291,15944,32298,4083,30010,44032,41316,28130,31221,18940, |
103 | 44513,5513,24837,54233,9899,39933,29068,23247,47440,52698, |
104 | 63372,8945,51493,57120,52514,20487,60260,59814,1484,24789, |
105 | 33866,45112,14526,60221,50973,25125,5991,48481,33017,59821, |
106 | 42654,51735,63141,55833,14490,35443,44171,62286,36815,23160, |
107 | 32977,31387,20525,49812,1295,43744,18217,34480,58203,61045, |
108 | 25528,48777,55709,47339,37999,49039,45022,35884,33880,44348, |
109 | 1526,6778,14068,16467,699,3820,2828,55811,62784,22958, |
110 | 21898,18678,15946,42931,47002,933,19312,32862,25994,6791, |
111 | 58533,15443,21048,11212,28899,9618,9053,61352,45516,23407, |
112 | 35256,58880,36406,36544,6981,30273,65302,37871,10065,19591, |
113 | 6464,15831,40594,62620,61300,39313,57367,56539,21501,61070, |
114 | 13632,27764,60371,47978,38670,33853,31205,49260,56140,18928, |
115 | 27245,47480,45291,64421,19547,29616,38608,45751,62137,18789, |
116 | 59923,25449,57664,9889,18109,26588,20278,51672,21209,23202, |
117 | 29419,55090,35147,32818,15270,49125,30648,64720,29814,57758, |
118 | 25352,11149,3703,16912,60520,34110,42527,1438,36294,17877, |
119 | 52345,28849,16183,34088,37493,39997,54697,970,14983,60268, |
120 | 19566,32131,54265,10366,49778,1520,43174,34006,64401,58034, |
121 | 35005,27621,65337,58940,9671,6424,61857,22542,30725,61777, |
122 | 12539,29197,24034,28450,2769,41642,50160,47847,18152,51053, |
123 | 47843,61836,25260,36400,22250,17010,29460,51714,42262,28230, |
124 | 54088,34531,17424,36588,53806,32847,11804,28344,16504,38941, |
125 | 23441,53703,31551,61990,59981,19355,32417,16169,64680,1600 |
126 | }; |
127 | |
128 | size_t num1 = 5; |
129 | size_t num2 = 10; |
130 | openfpm::vector<double> time; |
131 | |
132 | for (size_t n = 0; n < num1; n++) |
133 | { |
134 | //Timer |
135 | timer t; |
136 | t.start(); |
137 | for (size_t i = 0; i < num2; i++) { |
138 | size_t req = 0; |
139 | |
140 | //Pack requesting |
141 | |
142 | Packer<decltype(kStringsCount),HeapMemory>::packRequest(kStringsCount,req); |
143 | Packer<decltype(kIntegers),HeapMemory>::packRequest(kIntegers,req); |
144 | //Packer<decltype(kStringValue),HeapMemory>::packRequest(kStringValue,req); |
145 | |
146 | |
147 | // allocate the memory |
148 | HeapMemory pmem; |
149 | //pmem.allocate(req); |
150 | ExtPreAlloc<HeapMemory> & mem = *(new ExtPreAlloc<HeapMemory>(req,pmem)); |
151 | mem.incRef(); |
152 | |
153 | //Packing |
154 | Pack_stat sts; |
155 | |
156 | Packer<decltype(kStringsCount),HeapMemory>::pack(mem,kStringsCount,sts); |
157 | Packer<decltype(kIntegers),HeapMemory>::pack(mem,kIntegers,sts); |
158 | //Packer<decltype(kStringValue),HeapMemory>::pack(mem,kStringValue,sts); |
159 | |
160 | |
161 | //Unpacking |
162 | Unpack_stat ps; |
163 | |
164 | std::string kStringValueUnp; |
165 | kStringValueUnp.resize(86); |
166 | openfpm::vector<int64_t> kIntegersUnp; |
167 | |
168 | Unpacker<decltype(kStringsCount),HeapMemory>::unpack(mem,kStringsCount,ps); |
169 | Unpacker<decltype(kIntegersUnp),HeapMemory>::unpack(mem,kIntegersUnp,ps); |
170 | //Unpacker<decltype(kStringValueUnp),HeapMemory>::unpack(mem,kStringValueUnp,ps); |
171 | } |
172 | t.stop(); |
173 | |
174 | time.add(t.getwct()); |
175 | } |
176 | |
177 | double sum = 0; |
178 | for (size_t m = 0; m < time.size(); m++) |
179 | sum += time.get(m); |
180 | |
181 | } |
182 | |
183 | BOOST_AUTO_TEST_SUITE_END() |
184 | |
185 | #endif /* OPENFPM_DATA_SRC_PACKER_UNPACKER_PACKER_UNPACKER_BENCHMARK_TEST_HPP_ */ |
186 | |