public void DeepClonePerformance() { var item = new PlantGrowingEntity(); EntityFactory.InitializeProtobufInheritanceHierarchy(); var cloned = item.Clone(); var protoCloned = Serializer.DeepClone(item); var sw = Stopwatch.StartNew(); for (int i = 0; i < 10000; i++) { cloned = item.Clone(); } sw.Stop(); Trace.WriteLine("Default clone " + sw.ElapsedMilliseconds); sw = Stopwatch.StartNew(); for (int i = 0; i < 10000; i++) { cloned = Serializer.DeepClone(item); } sw.Stop(); Trace.WriteLine("Protobuf clone " + sw.ElapsedMilliseconds); }
public void CheckGrowing() { var entityGrowingManager = new EntityGrowingManager(null); var random = new Random(1); var entity = new PlantGrowingEntity(); entity.GrowLevels.Add(new GrowLevel { GrowTime = UtopiaTimeSpan.FromHours(1) }); entity.GrowLevels.Add(new GrowLevel { GrowTime = UtopiaTimeSpan.FromHours(1) }); entity.GrowLevels.Add(new GrowLevel { GrowTime = UtopiaTimeSpan.FromHours(1) }); entity.GrowLevels.Add(new GrowLevel { GrowTime = UtopiaTimeSpan.FromHours(1) }); entity.LastGrowUpdate = new UtopiaTime() + UtopiaTimeSpan.FromMinutes(1); var now = new UtopiaTime() + UtopiaTimeSpan.FromHours(2.5); entityGrowingManager.EntityGrowCheck(now, entity, null, random); Assert.AreEqual(2, entity.CurrentGrowLevelIndex); entity = new PlantGrowingEntity(); entity.GrowingSeasons.Add(UtopiaTime.TimeConfiguration.Seasons[0].Name); entity.GrowingSeasons.Add(UtopiaTime.TimeConfiguration.Seasons[2].Name); entity.GrowLevels.Add(new GrowLevel { GrowTime = UtopiaTimeSpan.FromDays(10) }); entity.GrowLevels.Add(new GrowLevel { GrowTime = UtopiaTimeSpan.FromDays(10) }); entity.GrowLevels.Add(new GrowLevel { GrowTime = UtopiaTimeSpan.FromDays(10) }); entity.GrowLevels.Add(new GrowLevel { GrowTime = UtopiaTimeSpan.FromDays(10) }); entity.LastGrowUpdate = new UtopiaTime() + UtopiaTimeSpan.FromMinutes(1); now = new UtopiaTime() + UtopiaTimeSpan.FromMinutes(50); entityGrowingManager.EntityGrowCheck(now, entity, null, random); entity.LastGrowUpdate = now; Assert.AreEqual(0, entity.CurrentGrowLevelIndex); now = new UtopiaTime() + UtopiaTimeSpan.FromYears(1); entityGrowingManager.EntityGrowCheck(now, entity, null, random); entity.LastGrowUpdate = now; Assert.AreEqual(1, entity.CurrentGrowLevelIndex); now = new UtopiaTime() + UtopiaTimeSpan.FromYears(1) + UtopiaTimeSpan.FromMinutes(1); entityGrowingManager.EntityGrowCheck(now, entity, null, random); entity.LastGrowUpdate = now; Assert.AreEqual(2, entity.CurrentGrowLevelIndex); }