C#高性能代码测试工具类:支持循环与多线程计时

小石头
小石头
发布时间:2026-10-13| 3人浏览过
原创

这是一个轻量级的C#性能测试辅助类,主要用于快速统计特定代码块或方法的运行时间。它支持设置循环执行次数以及开启多线程并发测试模式,能够自动记录开始到结束的总耗时并以秒为单位返回结果。该工具非常适合在开发阶段进行简单的性能基准测试。

功能概述

在进行代码优化或压测时,开发者往往需要一个便捷的工具来测量特定逻辑的执行效率。这个 PerformanceTest 类封装了计时逻辑,主要具备以下特点:

  • 自动统计耗时:从代码启动开始计时,直到所有任务完成后停止,输出精确到小数点后5位的秒数。
  • 支持循环测试:可通过配置设定执行的次数,便于观察多次运行的平均表现或累积耗时。
  • 支持多线程模式:可选择是否以并发线程的方式执行测试代码,模拟高并发场景下的性能表现。

使用步骤

第1步:初始化测试实例并配置参数

首先创建 PerformanceTest 的实例。你可以通过以下方法调整测试行为:

  • SetCount(int count):设置代码块执行的循环次数。默认值为 1。
  • SetIsMultithread(bool isMul):设置为 true 将启用多线程并发测试,默认为 false(单线程顺序执行)。

第2步:调用 Execute 方法执行测试

调用 Execute 方法,传入两个委托:Action<int> 用于定义需要测试的代码逻辑,Action<string> 用于接收测试结果。

  • 输入参数:第一个参数是测试函数,接收当前循环索引作为参数;第二个参数是回调函数,接收格式化后的总耗时字符串。
  • 注意事项:在多模式下,所有子线程执行完毕后才会触发回调函数,确保计时的准确性。

代码示例

以下是一个基本的使用示例,展示了如何测试一段包含延时操作的代码:

using System;

// 创建测试实例
PerformanceTest p = new PerformanceTest();

// 配置:循环10次,开启多线程测试
p.SetCount(10);
p.SetIsMultithread(true);

// 执行测试
p.Execute(
    i =>
    {
        // 这里放置需要测试的代码
        Console.WriteLine($"Thread {i} running...");
        System.Threading.Thread.Sleep(1000); // 模拟耗时操作
    },
    message =>
    {
        // 获取测试结果
        Console.WriteLine(message); 
    }
);

核心源码参考

如果需要将其集成到自己的项目中,可以参考以下完整实现。该源码基于 .NET Framework 风格编写,依赖 System.Threading 命名空间。

using System;
using System.Collections.Generic;
using System.Threading;

namespace SyntacticSugar
{
    /// <summary>
    /// 程序性能测试类:支持循环次数设置与多线程模式
    /// </summary>
    public class PerformanceTest
    {
        private DateTime BeginTime;
        private DateTime EndTime;
        private ParamsModel Params;

        /// <summary>
        /// 构造函数:默认执行1次,单线程模式
        /// </summary>
        public PerformanceTest()
        {
            Params = new ParamsModel() { RunCount = 1 };
        }

        /// <summary>
        /// 设置执行循环次数
        /// </summary>
        public void SetCount(int count)
        {
            Params.RunCount = count;
        }

        /// <summary>
        /// 设置是否启用多线程模式
        /// </summary>
        public void SetIsMultithread(bool isMul)
        {
            Params.IsMultithread = isMul;
        }

        /// <summary>
        /// 执行测试函数
        /// 

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。