# HG changeset patch # User Alys Brooks # Date 2022-11-14 05:54:29 # Node ID da295842ee5b307887a608be90d5066cd2731453 # Parent a5e03a25946d8613c772c6dd978e885f5fd2468b Further tweaks to limit performance impact of timing calculation. diff --git a/isometric-park-fna/FNAGame.cs b/isometric-park-fna/FNAGame.cs --- a/isometric-park-fna/FNAGame.cs +++ b/isometric-park-fna/FNAGame.cs @@ -57,6 +57,7 @@ int frameRate = 0; int frameCounter = 0; + long totalFrameCounter = 0; //Will cover over a billion years at 60 fps TimeSpan elapsedTime = TimeSpan.Zero; TimeSpan drawTime = TimeSpan.Zero; TimeSpan tileDrawTime = TimeSpan.Zero; @@ -69,9 +70,9 @@ TimeSpan worldUpdateTime = TimeSpan.Zero; TimeSpan simulationUpdateTime = TimeSpan.Zero; - Queue past_fps = new Queue(100); - Queue past_draw = new Queue(100); - Queue past_draw_millis = new Queue(100); + List past_fps = new List(100); + // Queue past_draw = new Queue(100); + List past_draw_millis = new List(100); int tilesDrawn = 0; private static int width = 1280; @@ -680,6 +681,7 @@ protected override void Draw(GameTime gameTime) { frameCounter++; + totalFrameCounter++; string fps = string.Format("fps: {0}", frameRate); bool has_tree = false; @@ -996,11 +998,14 @@ stopWatch2 = new Stopwatch(); stopWatch2.Start(); //Calcs for debug window: - past_draw.Enqueue(this.drawTime); - past_draw_millis.Enqueue((float)this.drawTime.TotalMilliseconds); - if ((this.frameCounter % 15) == 0) + // past_draw.Enqueue(this.drawTime); + Logging.Spy(new {frame = this.frameCounter}); + if (this.totalFrameCounter > 60 && ((this.frameCounter % 15) == 0)) { - past_fps.Enqueue(this.frameRate); + past_draw_millis.Add((float)this.drawTime.TotalMilliseconds); + past_draw_millis.Sort(); + past_fps.Add(this.frameRate); + past_fps.Sort(); /* @@ -1076,17 +1081,15 @@ additionalInfo.Add("Metadata entries", descriptions); if ((past_fps.Count() > 5) && show_another_window) { - var past_fps_floats = past_fps.Skip(5).ToArray(); - Array.Sort(past_fps_floats); + var past_fps_floats = past_fps.ToArray(); additionalInfo.Add(".01%% fps", MathUtils.Percentile(past_fps_floats, 0.0001f).ToString()); additionalInfo.Add(".1%% fps", MathUtils.Percentile(past_fps_floats, 0.001f).ToString()); additionalInfo.Add("1%% fps", MathUtils.Percentile(past_fps_floats, 0.01f).ToString()); additionalInfo.Add("50%% fps", MathUtils.Percentile(past_fps_floats, 0.50f).ToString()); } - if ((past_draw.Count() > 5) && show_another_window) { - var past_draw_floats = past_draw_millis.Skip(5).ToArray(); - Array.Sort(past_draw_floats); + if ((past_draw_millis.Count() > 5) && show_another_window) { + var past_draw_floats = past_draw_millis.ToArray(); additionalInfo.Add(".01%% draw", MathUtils.Percentile(past_draw_floats, 0.0001f).ToString()); additionalInfo.Add(".1%% draw", MathUtils.Percentile(past_draw_floats, 0.001f).ToString()); additionalInfo.Add("1%% draw", MathUtils.Percentile(past_draw_floats, 0.01f).ToString());