@@ -34,70 +34,16 @@ using SBG::LIB::Exp;
3434using SBG ::LIB ::Map;
3535using SBG ::LIB ::PWMap;
3636
37- // //////////////////////////////////////////////////////////////////////////////
38- // Set operations --------------------------------------------------------------
39- // //////////////////////////////////////////////////////////////////////////////
40-
41- TEST (DomOrdPWPerf, OrdDifference)
42- {
43- int N = 10000 ;
44-
45- SBG::Eval::setSetFactory (1 );
46-
47- Set s1 = SBG ::LIB ::SET_FACT .createSet ();
48- Set s2 = SBG ::LIB ::SET_FACT .createSet ();
49- for (int j = 0 ; j < N; ++j) {
50- Interval i (j*100 +1 , 1 , (j+1 )*100 );
51- s1.emplaceBack (i);
52- }
53-
54- for (int j = 0 ; j < N; ++j) {
55- Interval i (j*105 +1 , 1 , (j+1 )*105 );
56- s2.emplaceBack (i);
57- }
58-
59- auto start = std::chrono::high_resolution_clock::now ();
60- s1.difference (s2);
61- auto end = std::chrono::high_resolution_clock::now ();
62- auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
63- std::cout << " ORDERED DIFFERENCE TEST elapsed time: " << elapsed.count () << " ms\n " ;
64-
65- SUCCEED ();
66- }
67-
68- TEST (DomOrdPWPerf, OrdDisjointUnion)
69- {
70- int N = 10000 ;
71-
72- SBG::Eval::setSetFactory (1 );
73-
74- Set s1 = SBG ::LIB ::SET_FACT .createSet ();
75- Set s2 = SBG ::LIB ::SET_FACT .createSet ();
76- for (int j = 0 ; j < N; j+=2 ) {
77- Interval i (j*100 +1 , 1 , (j+1 )*100 );
78- s1.emplaceBack (i);
79- Interval i2 ((j+1 )*100 +1 , 1 , (j+2 )*100 );
80- s2.emplaceBack (i2);
81- }
82-
83- auto start = std::chrono::high_resolution_clock::now ();
84- s1.disjointCup (s2);
85- auto end = std::chrono::high_resolution_clock::now ();
86- auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
87- std::cout << " ORDERED DISJOINT UNION TEST elapsed time: " << elapsed.count () << " ms\n " ;
88-
89- SUCCEED ();
90- }
91-
92- // //////////////////////////////////////////////////////////////////////////////
93- // PWMap operations ------------------------------------------------------------
94- // //////////////////////////////////////////////////////////////////////////////
95-
37+ /* *
38+ * @class DomOrdPWPerf
39+ * @brief Test suite created to analyze the time growth of the different domain
40+ * ordered PWs operations.
41+ */
9642class DomOrdPWPerf : public ::testing::TestWithParam<SBG ::LIB ::NAT > {
9743 protected:
98- std::pair<PWMap, PWMap> quadraticTest (SBG ::LIB ::NAT map_sz) {
44+ std::pair<PWMap, PWMap> contiguousMaps (SBG ::LIB ::NAT map_sz) {
9945 SBG ::LIB ::NAT inter_sz = 100 ;
100- SBG ::LIB ::NAT set_sz = 1 ;
46+ SBG ::LIB ::NAT set_sz = 100 ;
10147
10248 Interval second_dim (0 , 1 , inter_sz - 1 );
10349 PWMap pw1 = SBG ::LIB ::PW_FACT .createPWMap ();
@@ -139,16 +85,14 @@ TEST_P(DomOrdPWPerf, DomOrdEq)
13985
14086 SBG ::LIB ::NAT map_sz = GetParam ();
14187 bool result = false ;
142- if (map_sz < 10000 ) {
143- auto [pw1, pw2] = quadraticTest (map_sz);
144-
145- auto start = std::chrono::high_resolution_clock::now ();
146- result = pw1 == pw2;
147- auto end = std::chrono::high_resolution_clock::now ();
148- auto curr_time = std::chrono::duration_cast<std::chrono::milliseconds>(
149- end - start);
150- std::cout << curr_time.count () << " \n " ;
151- }
88+
89+ auto [pw1, pw2] = contiguousMaps (map_sz);
90+ auto start = std::chrono::high_resolution_clock::now ();
91+ result = pw1 == pw2;
92+ auto end = std::chrono::high_resolution_clock::now ();
93+ auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(
94+ end - start);
95+ std::cout << elapsed.count () << " ms\n " ;
15296
15397 EXPECT_EQ (result, false );
15498}
@@ -159,62 +103,42 @@ TEST_P(DomOrdPWPerf, DomOrdPlus)
159103 SBG::Eval::setPWFactory (2 );
160104
161105 SBG ::LIB ::NAT map_sz = GetParam ();
162- auto [pw1, pw2] = quadraticTest (map_sz);
106+ auto [pw1, pw2] = contiguousMaps (map_sz);
163107
164108 auto start = std::chrono::high_resolution_clock::now ();
165109 pw1 + pw2;
166110 auto end = std::chrono::high_resolution_clock::now ();
167- auto curr_time = std::chrono::duration_cast<std::chrono::milliseconds>(
111+ auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(
168112 end - start);
169- std::cout << curr_time .count () << " \n " ;
113+ std::cout << elapsed .count () << " ms \n " ;
170114
171115 SUCCEED ();
172116}
173117
174- INSTANTIATE_TEST_SUITE_P (
175- DomOrdPWGrowth,
176- DomOrdPWPerf,
177- ::testing::Values (1000 , 10000 , 20000 )
178- );
179-
180- TEST (DomOrdPWPerfOld, DomOrdDom)
118+ TEST_P (DomOrdPWPerf, DomOrdDom)
181119{
182- SBG ::LIB ::NAT inter_sz = 100 ;
183- SBG ::LIB ::NAT set_sz = 10 ;
184- SBG ::LIB ::NAT map_sz = 1000 ;
185-
186120 SBG::Eval::setSetFactory (1 );
187121 SBG::Eval::setPWFactory (2 );
188122
189- PWMap pw = SBG ::LIB ::PW_FACT .createPWMap ();
190- for (unsigned int k = 0 ; k < map_sz; ++k) {
191- LExp le1 (1 , k);
192- Exp exp;
193- exp.emplaceBack (le1);
194- exp.emplaceBack (le1);
195- exp.emplaceBack (le1);
196- SBG ::LIB ::NAT map_offset = k*inter_sz*set_sz;
197- Set s = SBG ::LIB ::SET_FACT .createSet ();
198- for (unsigned int j = 0 ; j < set_sz; ++j) {
199- Interval i1 (map_offset + (j*inter_sz) + 1 , 1 , map_offset + (j+1 )*inter_sz);
200- SetPiece mdi;
201- mdi.emplaceBack (i1);
202- mdi.emplaceBack (i1);
203- mdi.emplaceBack (i1);
204- s.emplaceBack (mdi);
205- }
206- pw.emplaceBack (Map (s, exp));
207- }
123+ SBG ::LIB ::NAT map_sz = GetParam ();
124+ auto [pw1, pw2] = contiguousMaps (map_sz);
208125
209126 auto start = std::chrono::high_resolution_clock::now ();
210- pw .dom ();
127+ pw1 .dom ();
211128 auto end = std::chrono::high_resolution_clock::now ();
212- auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
213- std::cout << " PWL MAP ORDERED DOM TEST elapsed time: " << elapsed.count () << " ms\n " ;
129+ auto elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(
130+ end - start);
131+ std::cout << elapsed.count () << " ms\n " ;
214132
215133 SUCCEED ();
216134}
217135
136+ INSTANTIATE_TEST_SUITE_P (
137+ DomOrdPWGrowth,
138+ DomOrdPWPerf,
139+ ::testing::Values (1000 , 10000 , 100000 , 1000000 )
140+ );
141+
218142TEST (DomOrdPWPerfOld, DomOrdRestrict)
219143{
220144 unsigned int inter_sz = 100 ;
@@ -380,7 +304,7 @@ TEST(DomOrdPWPerfOld, DomOrdFirstInvSet)
380304
381305// equalImage
382306
383- TEST (DomOrdPWPerf , DomOrdLessImage)
307+ TEST (DomOrdPWPerfOld , DomOrdLessImage)
384308{
385309 unsigned int inter_sz = 100 ;
386310 unsigned int set_sz = 10 ;
0 commit comments