public IEnumerator PerfTest() { SceneMergeTests.CloseAllUniMergeWindows(); EditorSceneManager.NewScene(NewSceneSetup.EmptyScene); UnityEngine.Random.InitState(0); const int objectCount = 2500; var mine = FillScene.GenerateObjects(objectCount); var theirs = FillScene.GenerateObjects(objectCount); var objectMerge = EditorWindow.GetWindow <ObjectMerge>(); objectMerge.Show(); objectMerge.root.mine = mine; objectMerge.root.theirs = theirs; while (objectMerge.update != null) { yield return(null); } objectMerge.update = objectMerge.root.Copy(true); while (objectMerge.update != null) { yield return(null); } Assert.That(objectMerge.root.Same); // Note: The SceneMerge and ObjectMerge windows won't show all green becasue of the Undo which is applied after tests SceneMergeTests.CloseAllUniMergeWindows(); }
public IEnumerator TestObjectMerge() { SceneMergeTests.CloseAllUniMergeWindows(); var testScenePath = UniMergeConfig.defaultPath + "/Demo/Object Merge/ObjectCompare.unity"; EditorSceneManager.OpenScene(testScenePath); var objectMerge = EditorWindow.GetWindow <ObjectMerge>(); objectMerge.Show(); var count = 0; const float maxMergeFrames = 1000; while (objectMerge.update != null) { Assert.That(count++ < maxMergeFrames, "SceneMerge.Merge failed to refresh"); yield return(null); } objectMerge.update = objectMerge.root.Copy(true); count = 0; while (objectMerge.update != null) { Assert.That(count++ < maxMergeFrames, "ObjectMerge.root.Copy failed to refresh"); yield return(null); } Assert.That(objectMerge.root.Same); // Note: The SceneMerge and ObjectMerge windows won't show all green becasue of the Undo which is applied after tests SceneMergeTests.CloseAllUniMergeWindows(); }
public void PerfTest() { SceneMergeTests.CloseAllUniMergeWindows(); var trials = new List <long>(); const int trialCount = 10; for (var i = 0; i < trialCount; i++) { EditorSceneManager.NewScene(NewSceneSetup.EmptyScene); UnityEngine.Random.InitState(0); const int objectCount = 1000; var mine = FillScene.GenerateObjects(objectCount); var theirs = FillScene.GenerateObjects(objectCount); var objectMerge = EditorWindow.GetWindow <ObjectMerge>(); objectMerge.Show(); var root = objectMerge.root; root.SetGameObjects(mine, theirs); while (objectMerge.IsUpdating()) { if (!objectMerge.UpdateMoveNext()) { objectMerge.update = null; } } GC.Collect(); stopwatch.Reset(); stopwatch.Start(); var enumerator = root.Copy(true); while (enumerator.MoveNext()) { } stopwatch.Stop(); trials.Add(stopwatch.Elapsed.Ticks); Assert.That(root.Same); // Note: The SceneMerge and ObjectMerge windows won't show all green because of the Undo which is applied after tests SceneMergeTests.CloseAllUniMergeWindows(); } var average = trials.Average(); Debug.Log(string.Format("Average: {0}", new TimeSpan((long)average))); var stdDev = CalculateStdDev(trials); Debug.Log(string.Format("StDev: {0:0.0%} {1}", stdDev / average, new TimeSpan((long)stdDev))); }