Skip to content

Commit e8e9b33

Browse files
committed
Add some tests for SegmentTransform and ConcatTransform
- Performance tests of constructors - ToString test for ConcatTransform
1 parent 89af35b commit e8e9b33

2 files changed

Lines changed: 141 additions & 22 deletions

File tree

Orm/Xtensive.Orm.Tests.Core/Tuples/Transform/MergeTransformTest.cs

Lines changed: 78 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

Orm/Xtensive.Orm.Tests.Core/Tuples/Transform/SegmentTransformTest.cs

Lines changed: 63 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ namespace Xtensive.Orm.Tests.Core.Tuples.Transform
1515
[TestFixture]
1616
public class SegmentTransformTest
1717
{
18-
public const int IterationCount = 1000000;
18+
private const int IterationCount = 1000000;
19+
private const int MeasurementRuns = 5;
1920

2021
[Test]
2122
public void BaseTest()
@@ -58,7 +59,7 @@ public void BaseTest()
5859
[Test]
5960
[Explicit]
6061
[Category("Performance")]
61-
public void PerformanceTest()
62+
public void ComparisonPerformanceTest()
6263
{
6364
AdvancedComparerStruct<Xtensive.Tuples.Tuple> comparer = AdvancedComparerStruct<Xtensive.Tuples.Tuple>.Default;
6465
Xtensive.Tuples.Tuple t = Xtensive.Tuples.Tuple.Create(1, 2, 3, 4);
@@ -69,24 +70,71 @@ public void PerformanceTest()
6970
Xtensive.Tuples.Tuple ct2 = st.Apply(TupleTransformType.Tuple, t);
7071
int count = IterationCount;
7172

72-
comparer.Equals(ct1, ct2);
73-
comparer.Equals(ct1, wt1);
74-
comparer.Equals(wt1, wt2);
73+
_ = comparer.Equals(ct1, ct2);
74+
_ = comparer.Equals(ct1, wt1);
75+
_ = comparer.Equals(wt1, wt2);
7576

7677
TestHelper.CollectGarbage();
77-
using (new Measurement("O&O", MeasurementOptions.Log, count))
78-
for (int i = 0; i<count; i++)
79-
comparer.Equals(ct1, ct2);
78+
using (var mx = new Measurement("O&O", MeasurementOptions.Log, count)) {
79+
for (int i = 0; i<count; i++) {
80+
_ = comparer.Equals(ct1, ct2);
81+
}
82+
}
8083

8184
TestHelper.CollectGarbage();
82-
using (new Measurement("O&W", MeasurementOptions.Log, count))
83-
for (int i = 0; i<count; i++)
84-
comparer.Equals(ct1, wt1);
85-
85+
using (var mx = new Measurement("O&W", MeasurementOptions.Log, count)) {
86+
for (int i = 0; i<count; i++) {
87+
_ = comparer.Equals(ct1, wt1);
88+
}
89+
}
90+
8691
TestHelper.CollectGarbage();
87-
using (new Measurement("W&W", MeasurementOptions.Log, count))
88-
for (int i = 0; i<count; i++)
89-
comparer.Equals(wt1, wt2);
92+
using (var mx = new Measurement("W&W", MeasurementOptions.Log, count)) {
93+
for (int i = 0; i<count; i++) {
94+
_ = comparer.Equals(wt1, wt2);
95+
}
96+
}
97+
}
98+
99+
[Test]
100+
[Explicit]
101+
[Category("Performance")]
102+
public void InstanceCreationPerformanceTest()
103+
{
104+
Xtensive.Tuples.Tuple t = Xtensive.Tuples.Tuple.Create(1, 2L, "3", "4", 6L, 7);
105+
106+
int count = IterationCount * 10;
107+
108+
_ = new SegmentTransform(false, t.Descriptor, new Segment<int>(1, 1));
109+
_ = new SegmentTransform(false, t.Descriptor, new Segment<int>(1, 2));
110+
_ = new SegmentTransform(false, t.Descriptor, new Segment<int>(1, 3));
111+
_ = new SegmentTransform(false, t.Descriptor, new Segment<int>(1, 4));
112+
_ = new SegmentTransform(false, t.Descriptor, new Segment<int>(1, 5));
113+
114+
for (var run = 0; run < MeasurementRuns; run++) {
115+
TestHelper.CollectGarbage();
116+
using (var mx = new Measurement("S1|1", MeasurementOptions.Log, count)) {
117+
for (int i = 0; i < count; i++) {
118+
_ = new SegmentTransform(false, t.Descriptor, new Segment<int>(1, 1));
119+
}
120+
121+
mx.Complete();
122+
Console.WriteLine(mx.ToString());
123+
}
124+
}
125+
126+
Console.WriteLine();
127+
for (var run = 0; run < MeasurementRuns; run++) {
128+
TestHelper.CollectGarbage();
129+
using (var mx = new Measurement("S1|5", MeasurementOptions.Log, count)) {
130+
for (int i = 0; i < count; i++) {
131+
_ = new SegmentTransform(false, t.Descriptor, new Segment<int>(1, 5));
132+
}
133+
134+
mx.Complete();
135+
Console.WriteLine(mx.ToString());
136+
}
137+
}
90138
}
91139
}
92140
}

0 commit comments

Comments
 (0)