Download com.unity.ml-agents.tests/Tests/Editor/TimerTest.cs from ashish2244/ppo-SnowballTarget: direct link, hf CLI and curl.
- Browser
- Download file 3.12 kB
-
https://huggingface.co/ashish2244/ppo-SnowballTarget/resolve/main/com.unity.ml-agents.tests/Tests/Editor/TimerTest.cs
- Command line
-
hf download hf://ashish2244/ppo-SnowballTarget/com.unity.ml-agents.tests/Tests/Editor/TimerTest.cs
-
curl -L -o TimerTest.cs https://huggingface.co/ashish2244/ppo-SnowballTarget/resolve/main/com.unity.ml-agents.tests/Tests/Editor/TimerTest.cs
3.12 kB
| using NUnit.Framework; | |
| namespace Unity.MLAgents.Tests | |
| { | |
| public class TimerTests | |
| { | |
| [] | |
| public void TestNested() | |
| { | |
| TimerStack myTimer = TimerStack.Instance; | |
| myTimer.Reset(); | |
| using (myTimer.Scoped("foo")) | |
| { | |
| for (int i = 0; i < 5; i++) | |
| { | |
| using (myTimer.Scoped("bar")) | |
| { | |
| myTimer.SetGauge("my_gauge", i); | |
| myTimer.AddMetadata("i", $"{i}"); | |
| } | |
| } | |
| } | |
| var rootChildren = myTimer.RootNode.Children; | |
| Assert.That(rootChildren, Contains.Key("foo")); | |
| Assert.AreEqual(rootChildren["foo"].NumCalls, 1); | |
| var gauge = myTimer.RootNode.Gauges["my_gauge"]; | |
| Assert.NotNull(gauge); | |
| Assert.AreEqual(5, gauge.count); | |
| Assert.AreEqual(0, gauge.minValue); | |
| Assert.AreEqual(4, gauge.maxValue); | |
| Assert.AreEqual(4, gauge.value); | |
| Assert.AreEqual("4", myTimer.RootNode.Metadata["i"]); | |
| var fooChildren = rootChildren["foo"].Children; | |
| Assert.That(fooChildren, Contains.Key("bar")); | |
| Assert.AreEqual(fooChildren["bar"].NumCalls, 5); | |
| myTimer.Reset(); | |
| Assert.AreEqual(myTimer.RootNode.Children, null); | |
| } | |
| [] | |
| public void TestGauges() | |
| { | |
| TimerStack myTimer = TimerStack.Instance; | |
| myTimer.Reset(); | |
| // Simple test - adding 1's should keep that for the weighted and running averages. | |
| myTimer.SetGauge("one", 1.0f); | |
| var oneNode = myTimer.RootNode.Gauges["one"]; | |
| Assert.AreEqual(oneNode.weightedAverage, 1.0f); | |
| Assert.AreEqual(oneNode.runningAverage, 1.0f); | |
| for (int i = 0; i < 10; i++) | |
| { | |
| myTimer.SetGauge("one", 1.0f); | |
| } | |
| Assert.AreEqual(oneNode.weightedAverage, 1.0f); | |
| Assert.AreEqual(oneNode.runningAverage, 1.0f); | |
| // Try some more interesting values | |
| myTimer.SetGauge("increasing", 1.0f); | |
| myTimer.SetGauge("increasing", 2.0f); | |
| myTimer.SetGauge("increasing", 3.0f); | |
| myTimer.SetGauge("decreasing", 3.0f); | |
| myTimer.SetGauge("decreasing", 2.0f); | |
| myTimer.SetGauge("decreasing", 1.0f); | |
| var increasingNode = myTimer.RootNode.Gauges["increasing"]; | |
| var decreasingNode = myTimer.RootNode.Gauges["decreasing"]; | |
| // Expect the running average to be (roughly) the same, | |
| // but weighted averages will be biased differently. | |
| Assert.AreEqual(increasingNode.runningAverage, 2.0f); | |
| Assert.AreEqual(decreasingNode.runningAverage, 2.0f); | |
| // The older values are actually weighted more heavily, so we expect the | |
| // increasing series to have a lower moving average. | |
| Assert.Less(increasingNode.weightedAverage, decreasingNode.weightedAverage); | |
| } | |
| } | |
| } | |