You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.8 KiB
C#
69 lines
1.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System.Diagnostics;
|
|
|
|
namespace MoreMountains.Tools
|
|
{
|
|
/// <summary>
|
|
/// A struct to store data associated to speed tests
|
|
/// </summary>
|
|
public struct MMSpeedTestItem
|
|
{
|
|
/// the name of the test, has to be unique
|
|
public string TestID;
|
|
/// a stopwatch to compute time
|
|
public Stopwatch Timer;
|
|
/// <summary>
|
|
/// Creates a speed test with the specified ID and starts the timer
|
|
/// </summary>
|
|
/// <param name="testID"></param>
|
|
public MMSpeedTestItem(string testID)
|
|
{
|
|
TestID = testID;
|
|
Timer = Stopwatch.StartNew();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Use this class to run performance tests in your code.
|
|
/// It'll output the time spent between the StartTest and the EndTest calls
|
|
/// Make sure to use a unique ID for both calls
|
|
/// </summary>
|
|
public static class MMSpeedTest
|
|
{
|
|
private static readonly Dictionary<string, MMSpeedTestItem> _speedTests = new Dictionary<string, MMSpeedTestItem>();
|
|
|
|
/// <summary>
|
|
/// Starts a speed test of the specified ID
|
|
/// </summary>
|
|
/// <param name="testID"></param>
|
|
public static void StartTest(string testID)
|
|
{
|
|
if (_speedTests.ContainsKey(testID))
|
|
{
|
|
_speedTests.Remove(testID);
|
|
}
|
|
|
|
MMSpeedTestItem item = new MMSpeedTestItem(testID);
|
|
_speedTests.Add(testID, item);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Stops a speed test of the specified ID
|
|
/// </summary>
|
|
public static void EndTest(string testID)
|
|
{
|
|
if (!_speedTests.ContainsKey(testID))
|
|
{
|
|
return;
|
|
}
|
|
|
|
_speedTests[testID].Timer.Stop();
|
|
float elapsedTime = _speedTests[testID].Timer.ElapsedMilliseconds / 1000f;
|
|
_speedTests.Remove(testID);
|
|
|
|
UnityEngine.Debug.Log("<color=red>MMSpeedTest</color> [Test "+testID+"] test duration : "+elapsedTime+"s");
|
|
}
|
|
}
|
|
} |