1. 引言
在软件开发中,性能是一个至关重要的方面。了解和评估代码的执行时间对于优化和改进程序至关重要。C#提供了 System.Diagnostics
命名空间中的 Stopwatch
类,它允许我们方便地测量代码的执行时间。在本文中,我们将使用 Stopwatch
类创建一个简单的代码性能测试工具类,帮助我们更好地理解和优化代码。
2. Stopwatch类简介
Stopwatch
类是用于精确测量运行时间的工具。它提供了高精度的计时器,可以方便地开始、停止、重置,并获取经过的时间。我们将利用这些特性来实现我们的性能测试工具。
3.代码实现
using System;
using System.Diagnostics;
using UnityEngine;
using UnityEngine.Events;
using Debug = UnityEngine.Debug;
namespace Mr.Le.Utility.Tools
{
/// <summary>
/// Stopwatch类的工具类,用于计算运行一段代码所用的时间
/// </summary>
public static class StopwatchUtility
{
/// <summary>
/// 获取执行一段代码所用的时间信息
/// </summary>
/// <param name="call"></param>
/// <returns></returns>
private static TimeSpan GetTime(UnityAction call)
{
//声明计时器
Stopwatch timer = Stopwatch.StartNew();
//开启计时器
timer.Start();
//要测试的代码
call?.Invoke();
//停止计时器
timer.Stop();
//返回时间信息
return timer.Elapsed;
}
/// <summary>
/// 打印程序执行时间信息
/// </summary>
/// <param name="call"></param>
public static void PrintExecuteTime(UnityAction call, int executionNumver = 1)
{
if (executionNumver <= 0)
{
Debug.LogError("性能测试失败!执行次数最少为1次");
return;
}
//用于记录所用的总时间,单位是毫秒
double totalMilliseconds = 0;
for (int i = 0; i < executionNumver; i++)
{
totalMilliseconds += GetTime(call).TotalMilliseconds;
}
Debug.Log($"执行这段代码{executionNumver}次所需要的时间是:{totalMilliseconds / 1000}秒");
}
}
}
以上就是一个简单的代码性能测试工具类的实现代码,你可以将需要测试的代码片段以回调函数的方式传入测试。