private void CloneByCLoop <T>(Cloneable <T> c, Cloneable <T>[] a) { int count = a.Length; for (int i = 0; i < count;) { a[i++] = c.CloneByC(); a[i++] = c.CloneByC(); a[i++] = c.CloneByC(); a[i++] = c.CloneByC(); a[i++] = c.CloneByC(); a[i++] = c.CloneByC(); a[i++] = c.CloneByC(); a[i++] = c.CloneByC(); a[i++] = c.CloneByC(); a[i++] = c.CloneByC(); } }
private void CloneTest <T>(double speedFactor) { Random r = RandomManager.CreateRandom(SeedVariatorType.CallingMethod); T o = InstanceGeneratorProvider.Default.GetInstanceGenerator <T>().GetInstance(r); Cloneable <T> c = new Cloneable <T>(o); // Warmup Cloneable <T>[] a = new Cloneable <T> [100]; CloneByMCLoop(c, a); CloneByCLoop(c, a); // Real test a = new Cloneable <T> [(int)(CloneTestArrayLength * speedFactor / 10 * 10)]; TestLog.Info("Cloning test:"); TestLog.Info(" Type: {0}, length: {1}", c.GetType().GetShortName(), a.Length); using (IndentManager.IncreaseIndent()) { Cleanup(); using (new Measurement("MemberwiseClone ", MeasurementOptions.Log, a.Length)) CloneByMCLoop(c, a); Cleanup(); using (new Measurement("CopyingConstructor", MeasurementOptions.Log, a.Length)) CloneByCLoop(c, a); Cleanup(); } }
public Cloneable(Cloneable <T> source) { Value = source.Value; }