public new void CopyTest() { Random random = RandomManager.CreateRandom(SeedVariatorType.CallingMethod); int loopCount = 10; int offset = random.Next(fieldTypes.Length); Type[] sourceTypes; Type[] targetTypes = GetTestTypes(loopCount, out sourceTypes, offset); Xtensive.Tuples.Tuple source = Xtensive.Tuples.Tuple.Create(sourceTypes); Xtensive.Tuples.Tuple target = Xtensive.Tuples.Tuple.Create(targetTypes); Xtensive.Tuples.Tuple sameTypeTarget = Xtensive.Tuples.Tuple.Create(sourceTypes); PopulateData(sourceTypes, source); PopulateData(targetTypes, target); PopulateData(sourceTypes, sameTypeTarget); int startingIndex = random.Next(fieldTypes.Length * loopCount / 3) + fieldTypes.Length; int startingTargetIndex = (random.Next(loopCount / 4) + 1) * fieldTypes.Length + offset + startingIndex % fieldTypes.Length; int count = random.Next(fieldTypes.Length * loopCount / 4); source.CopyTo(target, startingIndex, startingTargetIndex, count); AssertAreSame(source, target, startingIndex, startingTargetIndex, count); source.CopyTo(sameTypeTarget, source.Count); AssertAreSame(source, sameTypeTarget); }
public void CopyToTest() { const int iterationCount = 10000000; Random random = RandomManager.CreateRandom(SeedVariatorType.CallingMethod); Xtensive.Tuples.Tuple tuple = Xtensive.Tuples.Tuple.Create(10, 20, 234.456f, 2345.34534d, "aaaaaaaaaaa", DateTime.Now); var hashCode = tuple.GetHashCode(); var copy = tuple.CreateNew(); // Warmup for (int i = 0; i < iterationCount / 10; i++) { tuple.CopyTo(copy); } // Actual run TestHelper.CollectGarbage(true); // TestLog.Info("Get ready..."); using (new Measurement("Copying tuples", MeasurementOptions.Log, iterationCount)) { for (int i = 0; i < iterationCount; i++) { tuple.CopyTo(copy); } } }