C# 性能测试程序及编写要点

C#接口性能测试--计算执行时间 在做程序的时候,肯定会遇到给他人提供接口,或者使用他人接口的地方。对于一个开发者来说,不管是提供给他人的接口还是,自己提供给他人的接口。都要进行测试。     对于很多的测试,需要详细的记录 该接口的时间范围,比如 该接口的性能为   10ms 100ms的地方。     既然要了解每个接口的性能,该测试不是为了 测试接口的正确性,只是在测试正确性的时候 同时,记录一下该接口的执行时间。 阅读详情

直接看程序:

    class Timing
    {
        TimeSpan timestart;
        TimeSpan duration;
        public void Start()
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
            timestart = Process.GetCurrentProcess().TotalProcessorTime;
        }
        public void Stop()
        {
           
            duration = Process.GetCurrentProcess().TotalProcessorTime.Subtract(timestart);
        }
        public TimeSpan Result { get { return duration; } }
    }

    class Program
    {
        static public string BuildSB(int size)
        {
            StringBuilder strBd = new StringBuilder();
            for (int i = 0; i < size; i++)
            {
                strBd.Append("a");
            }
            return strBd.ToString();
        }

        static public string BuildString(int size)
        {
            string str = "";
            for (int i = 0; i < size; i++)
            {
                str += "i";
            }
            return str;
        }

        static void Main(string[] args)
        {
            Timing t1 = new Timing(), t2 = new Timing();
            int size = 50000;
            // 测试 BuildSB 的性能
            t1.Start();
            for (int i = 0; i < 500; i++)
                BuildSB(size);
            t1.Stop();
            // 测试 BuildString 的性能
            t2.Start();
            BuildString(size);
            t2.Stop();
            Console.WriteLine(t1.Result);
            Console.WriteLine(t2.Result);
            Console.Read();
        }
    }

结果如下:

00:00:00.2343750
00:00:00.2656250

可以看出,使用BuildSB方法 500遍 和使用BuildString方法 1 遍的时间差不多。


红色部分,用来测试代码性能。其中几个要点:

1、在 Timing.start() 中,先设置起始时间;

2、在 Timing.start() 中,要先把垃圾回收一遍,并且把 垃圾回收的线程挂起,因为系统垃圾回收的发生时间是不确定的,会影响测试的结果。

3、我们用的是 Process.GetCurrentProcess().TotalProcessorTime 来进行时间统计,实际C#代码性能测试还可以使用 StopWatch、 UserProcessorTime。建议用 TotalProcessorTime。因为,StopWatch 统计的还包括“ 上屏”时间,比如说在 控制台中打印的时间,而不仅仅是 CPU处理代码的时间; 而UserProcessorTime 统计的是 CPU用户时间,没有统计CPU内核时间。TotalProcessorTime 统计的是CPU的用户时间和内核时间的总和。

用 C# Stopwatch 计时,让代码性能飞起来! Stopwatch 是一个内置于 .NET 的性能计时工具,它可以精确测量时间间隔,特别适用于评估分析代码执行时间和性能。本文将通过一个实战示例带你深入了解 Stopwatch 的强大功能及其在日常开发中的应用 阅读详情

相关推荐

编写一个并发性能测试的小程序

????欢迎点赞 :???? 收藏 ⭐留言 ???? 如有错误敬请指正,赐人玫瑰,手留余香! ????本文作者:由webmote 原创,首发于 【掘金】 ????作者格言: 生活在于折腾,当你不折腾生活时,生活就开始折腾你,让我们一起加油!???????????? 1.为了统计qps,我使用了Interlocked锁 是的,是锁总会有损耗,因为使用了Interlocked锁的缘故,肯定会对性能测试造成一定的干扰,那我们先来看看底噪是多少,开100个线程,写个什么都不干的函数,开始run。 cpu跑满了

网尘的技术专栏 1373

C#代码性能测试程序编写要点

直接看程序:     class Timing     {         TimeSpan timestart;         TimeSpan duration;         public void Start()         {             GC.Collect();             GC.WaitForPendingFinalizers();

Rondapapi的博客 1790

异步性能测试的C#示例代码

而针对异步操作的性能测试尤为重要,因为异步操作在处理并发和高负载情况下往往能够提供更好的性能表现。本文将为您提供一个C#的异步性能测试示例代码,帮助您评估和优化异步操作的性能。通过本文提供的C#异步性能测试示例代码,您可以对涉及异步操作的应用程序进行性能测试。通过测量总共耗时和每个请求的平均耗时,您可以评估异步操作的性能,并根据需要进行优化。具体而言,我们要测试一个异步方法,该方法使用HTTP客户端发送请求并返回响应。在性能测试完成后,我们停止计时器并输出测试结果,包括总共耗时和每个请求的平均耗时。

CyberNova的博客 197

测试电脑性能(c语言简单应用)

使用c语言的递归测试电脑性能。

m0_73345579的博客 1599

性能测试:C#中string加号与StringBuilder Append的拼接效率对比

本文还有配套的精品资源,点击获取 简介:本项目比较了.NET环境下,C#中使用 string 类型的加号( + )操作与 StringBuilder 类的 Append 方法在进行字符串拼接时的性能差异。在C#中, string 类型是不可变的,因此频繁使用加号会导致多次创建新对象,增加性能开销。相对而言...

weixin_29323977的博客 1073

CPU压力测试-vs2010中C#程序

CPU压力测试-vs2010中C#程序

c# - File类(写入文件)

1、File.WriteAllBytes(string path, content) 创建一个新文件,写入指定的字节数组,与FileReadAllBytes() 相反,如果目标文件已经存在,则会覆盖目标文件。 // System.Text.Encoding.UTF8.GetBytes(content) 把字符串转字节数组 static void Main(string[] args) { string content = "这是一段测试文字"; byte[] conBytes =...

记录点滴 6894

自组织映射神经网络(SOM)

目录 1 背景:自组织(竞争型)神经网络 2竞争学习的概念与原理 2.1 竞争学习的步骤 2.2 示例 3SOM典型结构 4SOM网的权值调整域 5 SOM Kohonen 学习算法 6 SOM示例 7SOM设计细节 7.1输出层设计 7.2输出层节点排列的设计 7.3 权值初始化问题 7.4学习率的设计 7.5设计拓扑领域 8SOM功能分析 8.1 保序映射 8.2数据压缩 8.3 特征提取 9自组织映射神经网络与K均值算法的区别...

weixin_39910711的博客 1万+

C#编写CPU压力测试程序

这里用c#编写cpu的压力测试程序。 public void Calculate(object arg) { Random ra = new Random(); Thread.Sleep(ra.Next(10, 1000)); pinghost(); FileWrite(arg.ToString()); } private void FileWrite(st

weixin_43621549的博客 2317

PaddleOCR多进程GPU推理实战:200万图片高效处理方案

本文详细介绍了PaddleOCR多进程GPU推理在高效处理200万张图片OCR任务中的实战方案。通过优化GPU利用率、多进程并发和关键参数调优,实现了从单进程3000张/小时到8进程3万张/小时的性能飞跃,为大规模OCR处理提供了可靠解决方案。

prometheus9mon的博客 261

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2317

用BenchmarkDotNet给C#程序做性能测试

BenchmarkDotNet是一个用MIT协议开源的C#程序性能测试的一个库,非常简单易用。 用法 安装NuGet包,BenchmarkDotNet 在需要做性能测试的方法前加上属性[Benchmark]。 在Main函数调用性能测试var summary = BenchmarkRunner.Run();。

dotNET跨平台 2305

Rope DFM一键整合包AI脸部替换教程:使用DeepFaceLab模型实现专业级视频和直播脸部替换

在AI脸部替换工具中,Rope凭借其出色的自动遮罩处理拔得头筹,结合DFM模型中的DFL XSeg遮罩处理,效果更是提升了一个台阶。因为在训练模型时,它已经通过大量的侧脸图片进行训练,达到了单张图片无法企及的效果。然而,想要通过DeepFaceLab获得专业级的效果,不仅难度大,时间成本也相当高,训练模型也是个不小的挑战。举个简单的例子,使用图片脸部替换时,如果佩戴眼镜,脸部替换后的可能会显得很假。另外,在视频中,比如歌手演唱时,话筒遮挡住脸部,这种场景也可以通过遮罩训练后的模型来处理,呈现出更逼真的效果。

m0_72580657的博客 8169

C#程序的性能测试和优化

性能测试和优化是一个持续过程:先通过BenchmarkDotNet等工具精确测试,识别瓶颈(如高时间复杂度操作或内存泄漏),然后应用算法优化、内存管理等策略。优化后务必重新测试验证。测试驱动:永远基于数据优化。关注瓶颈:优先优化热点代码(20%代码影响80%性能)。工具使用:BenchmarkDotNet和Visual Studio工具链是必备。通过以上步骤,您可以显著提升C#程序的效率。如果您有具体代码场景,我可以提供更针对性的建议!

2501_93569673的博客 734

华为交换机与思科/华三设备LACP对接实战:手把手教你配置链路聚合

本文详细解析了华为交换机与思科、华三设备间的LACP链路聚合配置实战,涵盖核心原理、配置步骤及排错技巧。通过对比不同厂商的实现差异,提供可落地的跨厂商对接方案,助力企业网络工程师高效部署高可靠性链路聚合。

weixin_30836759的博客 427

Livox激光雷达传感器在Python3中的完整驱动程序:深入剖析OpenPyLivox库的实现和应用

当我们提到激光雷达或激光扫描技术时,Livox激光雷达传感器无疑是业界的佼佼者。尽管Livox提供了基于C++的官方软件和API,但现在,有了OpenPyLivox (OPL) 库,Python开发者们也能够轻松地接入和控制这些高级的激光雷达设备。

qq_38334677的博客 1002

C# 标准性能测试

经常我写一个类,作为一个工具类,小伙伴会问我这个类的性能,这时我就需要一个标准的工具进行测试。 本文告诉大家如何使用 benchmarkdotnet 做测试

lindexi 5440

实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)

导读 本文主要介绍使用OpenCV对扫描文本矫正的应用实例及详细实现步骤。 背景介绍 在使用打印机或扫描仪扫描文档时,由于摆放位置差异难免造成扫描文档的倾斜。本文将使用OpenCV将倾斜的文档矫正水平并去除黑边。 实现步骤 本文只针对包含大部分文字的文档做倾斜矫正,思路来源是大部分文字倾斜后同一行的也在同一条直线,通过拟合直线计算文本倾斜角度,然后旋转来实现文本倾斜矫正。 详细步骤: ①加载倾斜图像 ②灰度转换+腐蚀+膨胀 ③Canny边缘检测 + 霍夫线变换检测直线 ...

Color Space的博客 3402

讨论C#中的并发性能测试和调试⼯具,以及它们在多线程编程中的作⽤

多线程和并发编程中,性能测试和调试是确保代码正确性和优化性能的关键环节。并发代码的调试难度较高,因为多个线程的执行顺序不确定,容易出现。通过这些工具和方法,开发者可以更高效地编写、测试和优化并发代码,解决多线程环境中的复杂问题。幸运的是,C# 提供了多种工具和方法帮助开发者进行并发性能测试和调试。能帮助我们准确衡量并发代码的性能差异。

fapw15的博客 1225

家用扫地机器人实物拆解报告-从顶盖到每一颗螺丝 · 逐层拆解旗舰扫拖一体机器人

2026年旗舰扫拖机器人拆解报告:采用D形机身设计,主机重4.5kg,基站重12kg。核心配置包括RK3588S+STM32H743双处理器、8颗21700电池、LDS激光雷达和双摄像头+结构光导航系统。创新设计亮点:锥形滚刷自动排毛发、活水循环拖地系统、基站集成450W强力集尘和自动上下水模块(带三重防漏保护)。整机采用模块化设计,关键部件均支持快速更换,在密封性、防呆设计和降本增效方面展现出成熟的工程智慧。

智能硬件研发,欢迎交流 522

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【.NET性能革命】:用Rust编写DLL让C#程序速度飙升的秘密武器

提升C#性能的新选择!通过C#调用Rust生成的DLL实现性能加速,适用于高频计算、图像处理等场景。结合Rust的高效内存管理与.NET生态,显著提升运行速度,无缝集成易维护,值得收藏。

CodePulse的博客 692

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C#并行计算类Parallel的性能测试

这个假期主要做两件

HuLihui's Blog 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C# 标准性能测试高级用法

本文告诉大家如何在项目使用性能测试测试自己写的方法 在 C# 标准性能测试 已经告诉大家如何使用 BenchmarkDotNet 测试性能,本文会告诉大家高级的用法。 建议是创建一个控制台项目用来做性能测试,这个项目要求是 dotnet framework 4.6 以上,建议是 4.7 的版本。使用这个项目引用需要测试的项目,然后在里面写测试的代码。 例如被测试项目有一个类 Foo 里面有...

lindexi 990

C#版Oracle Berkeley DB 性能测试

大家有更好的测试结果,妨请告诉我,我的邮箱:meback@dongee.net, 此文权当抛砖引玉。 转载不必说明出处,随便转去。 Oracle Berkeley DB 基础知识:http://www.oracle.com/technology/products/berkeley-db/index.htmlBerkeley DB的中国官方博客: Oracle Berkeley DB 中国...

171

C#性能测试BenchmarkDotnet

在我们开发高性能代码时,需要各种针对性能优化进行编码。那么如何才能知道我们所加的代码是否有性能方面的正向优化呢?有了BenchmarkDotNet,做性能对比测试就非常容易了

寒冰屋的专栏 1534
上一篇: C#代码性能测试程序编写要点
下一篇: C# 二叉树的综合操作(一):查找、插入、最大(小)值、先序遍历、后序遍历及中序遍历
Rondapapi
博客等级 码龄10年 4粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值