@@ -14,7 +14,8 @@ namespace Xtensive.Orm.Tests.Core.Tuples.Transform
1414 [ TestFixture ]
1515 public class MergeTransformTest
1616 {
17- public const int IterationCount = 1000000 ;
17+ private const int IterationCount = 1_000_000 ;
18+ private const int MeasurementRuns = 5 ;
1819
1920 [ Test ]
2021 public void BaseTest ( )
@@ -55,10 +56,21 @@ public void BaseTest()
5556 } ) ;
5657 }
5758
59+ [ Test ]
60+ public void ToStringTest ( )
61+ {
62+ Xtensive . Tuples . Tuple t1 = Xtensive . Tuples . Tuple . Create ( 1 , "2" ) ;
63+ Xtensive . Tuples . Tuple t2 = Xtensive . Tuples . Tuple . Create ( 3 , 4.0 , "5" ) ;
64+
65+ var ct = new ConcatTransform ( false , t1 . Descriptor , t2 . Descriptor ) ;
66+ Assert . That ( ct . ToString ( ) , Is . EqualTo ( "ConcatTransform(TupleDescriptor(Int32, String) + TupleDescriptor(Int32, Double, String), r/w)" ) ) ;
67+
68+ }
69+
5870 [ Test ]
5971 [ Explicit ]
6072 [ Category ( "Performance" ) ]
61- public void PerformanceTest1 ( )
73+ public void ComparisonPerformanceTest ( )
6274 {
6375 AdvancedComparerStruct < Xtensive . Tuples . Tuple > comparer = AdvancedComparerStruct < Xtensive . Tuples . Tuple > . Default ;
6476 Xtensive . Tuples . Tuple t = Xtensive . Tuples . Tuple . Create ( 1 ) ;
@@ -74,19 +86,78 @@ public void PerformanceTest1()
7486 comparer . Equals ( wt1 , wt2 ) ;
7587
7688 TestHelper . CollectGarbage ( ) ;
77- using ( new Measurement ( "O&O" , MeasurementOptions . Log , count ) )
78- for ( int i = 0 ; i < count ; i ++ )
89+ using ( var mx = new Measurement ( "O&O" , MeasurementOptions . Log , count ) ) {
90+ for ( int i = 0 ; i < count ; i ++ )
7991 comparer . Equals ( ct1 , ct2 ) ;
8092
93+ mx . Complete ( ) ;
94+ Console . WriteLine ( mx . ToString ( ) ) ;
95+ }
96+
8197 TestHelper . CollectGarbage ( ) ;
82- using ( new Measurement ( "O&W" , MeasurementOptions . Log , count ) )
83- for ( int i = 0 ; i < count ; i ++ )
98+ using ( var mx = new Measurement ( "O&W" , MeasurementOptions . Log , count ) ) {
99+ for ( int i = 0 ; i < count ; i ++ )
84100 comparer . Equals ( ct1 , wt1 ) ;
101+
102+ mx . Complete ( ) ;
103+ Console . WriteLine ( mx . ToString ( ) ) ;
104+ }
85105
86106 TestHelper . CollectGarbage ( ) ;
87- using ( new Measurement ( "W&W" , MeasurementOptions . Log , count ) )
107+ using ( var mx = new Measurement ( "W&W" , MeasurementOptions . Log , count ) ) {
88108 for ( int i = 0 ; i < count ; i ++ )
89109 comparer . Equals ( wt1 , wt2 ) ;
110+
111+ mx . Complete ( ) ;
112+ Console . WriteLine ( mx . ToString ( ) ) ;
113+ }
114+ }
115+
116+
117+ [ Test ]
118+ [ Explicit ]
119+ [ Category ( "Performance" ) ]
120+ public void InstanceCreationPerformanceTest ( )
121+ {
122+ Xtensive . Tuples . Tuple t1 = Xtensive . Tuples . Tuple . Create ( 1 ) ;
123+ Xtensive . Tuples . Tuple t2 = Xtensive . Tuples . Tuple . Create ( 1 , "2" ) ;
124+ Xtensive . Tuples . Tuple t3 = Xtensive . Tuples . Tuple . Create ( 1 , 2L , "3" ) ;
125+ Xtensive . Tuples . Tuple t4 = Xtensive . Tuples . Tuple . Create ( 1 , 2L , "3" , "4" ) ;
126+ Xtensive . Tuples . Tuple t5 = Xtensive . Tuples . Tuple . Create ( 1 , 2L , "3" , "4" , 5 ) ;
127+ Xtensive . Tuples . Tuple t6 = Xtensive . Tuples . Tuple . Create ( 1 , 2L , "3" , "4" , 5 , 6L ) ;
128+
129+ int count = IterationCount * 10 ;
130+
131+ _ = new ConcatTransform ( false , t1 . Descriptor , t1 . Descriptor ) ;
132+ _ = new ConcatTransform ( false , t2 . Descriptor , t2 . Descriptor ) ;
133+ _ = new ConcatTransform ( false , t3 . Descriptor , t3 . Descriptor ) ;
134+ _ = new ConcatTransform ( false , t4 . Descriptor , t4 . Descriptor ) ;
135+ _ = new ConcatTransform ( false , t5 . Descriptor , t5 . Descriptor ) ;
136+
137+ for ( var run = 0 ; run < MeasurementRuns ; run ++ ) {
138+ TestHelper . CollectGarbage ( ) ;
139+ using ( var mx = new Measurement ( "N1Concat" , MeasurementOptions . Log , count ) ) {
140+ for ( int i = 0 ; i < count ; i ++ ) {
141+ _ = new ConcatTransform ( false , t1 . Descriptor , t1 . Descriptor ) ;
142+ }
143+
144+ mx . Complete ( ) ;
145+ Console . WriteLine ( mx . ToString ( ) ) ;
146+ }
147+ }
148+
149+ Console . WriteLine ( ) ;
150+ for ( var run = 0 ; run < MeasurementRuns ; run ++ ) {
151+ TestHelper . CollectGarbage ( ) ;
152+ using ( var mx = new Measurement ( "N5Concat" , MeasurementOptions . Log , count ) ) {
153+ for ( int i = 0 ; i < count ; i ++ ) {
154+ _ = new ConcatTransform ( false , t5 . Descriptor , t5 . Descriptor ) ;
155+ }
156+
157+ mx . Complete ( ) ;
158+ Console . WriteLine ( mx . ToString ( ) ) ;
159+ }
160+ }
90161 }
91162 }
92163}
0 commit comments