public void ArrayTest <T>(int length, int count, double equalityProbability) { Random r = RandomManager.CreateRandom(SeedVariatorType.CallingMethod); IInstanceGenerator <T> g = InstanceGeneratorProvider.Default.GetInstanceGenerator <T>(); IEnumerator <T> sequence = InstanceGenerationUtils <T> .GetInstances(g, r, equalityProbability).GetEnumerator(); sequence.MoveNext(); T[] array = new T[length]; for (int i = 0; i < length; i++, sequence.MoveNext()) { array[i] = sequence.Current; } AdvancedComparerStruct <T> c1 = AdvancedComparer <T> .System; AdvancedComparerStruct <T> c2 = AdvancedComparer <T> .Default; if (!TestInfo.IsProfileTestRunning) { ArrayComparisonLoop(c1, array, 1); } ArrayComparisonLoop(c2, array, 1); TestLog.Info("Array comparison (equality probability = {0}):", (int)(equalityProbability * 100)); TestLog.Info(" Type: {0}, array length: {1}", typeof(T).GetShortName(), length); using (IndentManager.IncreaseIndent()) { TestHelper.CollectGarbage(); if (!TestInfo.IsProfileTestRunning) { using (new Measurement("Default comparer", MeasurementOptions.Log, (length - 1) * count)) ArrayComparisonLoop(c1, array, count); TestHelper.CollectGarbage(); } using (new Measurement("Xtensive comparer", MeasurementOptions.Log, (length - 1) * count)) ArrayComparisonLoop(c2, array, count); TestHelper.CollectGarbage(); } }
private static void SimpleComparisonLoop <T>(AdvancedComparerStruct <T> c, T o1, T o2, int count) { for (int i = 0; i < count; i++) { c.Equals(o1, o2); } }
public void PerformanceTransformTesting(Xtensive.Tuples.Tuple tuple1, Xtensive.Tuples.Tuple tuple2, Xtensive.Tuples.Tuple tuple3, Xtensive.Tuples.Tuple tuple4) { int count = IterationCount; AdvancedComparerStruct <Xtensive.Tuples.Tuple> comparer = AdvancedComparerStruct <Xtensive.Tuples.Tuple> .Default; comparer.Equals(tuple1, tuple2); comparer.Equals(tuple1, tuple3); comparer.Equals(tuple3, tuple4); TestHelper.CollectGarbage(); using (new Measurement("O&O", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(tuple1, tuple2); } TestHelper.CollectGarbage(); using (new Measurement("O&W", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(tuple1, tuple3); } TestHelper.CollectGarbage(); using (new Measurement("W&W", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(tuple3, tuple4); } }
public void PerformanceTest() { AdvancedComparerStruct <Xtensive.Tuples.Tuple> comparer = AdvancedComparerStruct <Xtensive.Tuples.Tuple> .Default; Xtensive.Tuples.Tuple t = Xtensive.Tuples.Tuple.Create(1, 2); Xtensive.Tuples.Tuple ct = t.ToRegular(); Xtensive.Tuples.Tuple wt = t.ToReadOnly(TupleTransformType.TransformedTuple); Xtensive.Tuples.Tuple wtc = t.ToReadOnly(TupleTransformType.TransformedTuple); int count = IterationCount; comparer.Equals(t, ct); comparer.Equals(t, wt); comparer.Equals(wt, wtc); TestHelper.CollectGarbage(); using (new Measurement("O&O", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(t, ct); } TestHelper.CollectGarbage(); using (new Measurement("O&W", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(t, wt); } TestHelper.CollectGarbage(); using (new Measurement("W&W", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(wt, wtc); } }
private static void ArrayComparisonLoop <T>(AdvancedComparerStruct <T> c, T[] array, int count) { int length = array.Length; for (int j = 0; j < count; j++) { for (int i = 0; i < length - 1;) { c.Equals(array[i], array[++i]); } } }
public void TwoValuesTest <T>(int count) { Random r = RandomManager.CreateRandom(SeedVariatorType.CallingMethod); IInstanceGenerator <T> g = InstanceGeneratorProvider.Default.GetInstanceGenerator <T>(); IEnumerator <T> sequence = InstanceGenerationUtils <T> .GetInstances(g, r, 1).GetEnumerator(); sequence.MoveNext(); T o1 = sequence.Current; sequence.MoveNext(); T o1c = sequence.Current; T o2 = g.GetInstance(r); AdvancedComparerStruct <T> c1 = AdvancedComparer <T> .System; AdvancedComparerStruct <T> c2 = AdvancedComparer <T> .Default; if (!TestInfo.IsProfileTestRunning) { SimpleComparisonLoop(c1, o1, o2, 1000); } SimpleComparisonLoop(c2, o1, o2, 1000); TestLog.Info("Values comparison:"); TestLog.Info(" Type: {0}, instances: {1} x 2, {2}", typeof(T).GetShortName(), o1, o2); using (IndentManager.IncreaseIndent()) { TestHelper.CollectGarbage(); if (!TestInfo.IsProfileTestRunning) { using (new Measurement("Default comparer (equal) ", MeasurementOptions.Log, count)) SimpleComparisonLoop(c1, o1, o1c, count); TestHelper.CollectGarbage(); using (new Measurement("Default comparer (different)", MeasurementOptions.Log, count)) SimpleComparisonLoop(c1, o1, o2, count); TestHelper.CollectGarbage(); } using (new Measurement("Xtensive comparer (equal) ", MeasurementOptions.Log, count)) SimpleComparisonLoop(c2, o1, o1c, count); using (new Measurement("Xtensive comparer (different)", MeasurementOptions.Log, count)) SimpleComparisonLoop(c2, o1, o2, count); TestHelper.CollectGarbage(); } }
public void PerformanceTest2() { AdvancedComparerStruct <Xtensive.Tuples.Tuple> comparer = AdvancedComparerStruct <Xtensive.Tuples.Tuple> .Default; Xtensive.Tuples.Tuple t = Xtensive.Tuples.Tuple.Create(1); CombineTransform mt = new CombineTransform(false, t.Descriptor, t.Descriptor, t.Descriptor, t.Descriptor); SegmentTransform st = new SegmentTransform(false, mt.Descriptor, new Segment <int>(1, 2)); Xtensive.Tuples.Tuple wt1 = st.Apply(TupleTransformType.TransformedTuple, mt.Apply(TupleTransformType.TransformedTuple, t, t, t, t)); Xtensive.Tuples.Tuple wt2 = st.Apply(TupleTransformType.TransformedTuple, mt.Apply(TupleTransformType.TransformedTuple, t, t, t, t)); Xtensive.Tuples.Tuple ct1 = st.Apply(TupleTransformType.Tuple, mt.Apply(TupleTransformType.Tuple, t, t, t, t)); Xtensive.Tuples.Tuple ct2 = st.Apply(TupleTransformType.Tuple, mt.Apply(TupleTransformType.Tuple, t, t, t, t)); int count = IterationCount; comparer.Equals(ct1, ct2); comparer.Equals(ct1, wt1); comparer.Equals(wt1, wt2); TestHelper.CollectGarbage(); using (new Measurement("O&O", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(ct1, ct2); } TestHelper.CollectGarbage(); using (new Measurement("O&W", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(ct1, wt1); } TestHelper.CollectGarbage(); using (new Measurement("W&W", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(wt1, wt2); } }
public void ClassTest() { AdvancedComparerStruct <TestClass> dd = AdvancedComparerStruct <TestClass> .System; }