首页 > 其他分享 >BenchMark 基准性能测试

BenchMark 基准性能测试

时间:2022-11-28 10:46:42浏览次数:40  
标签:Console 基准 BenchMark BenchmarkDotNet void 测试 using data public

BenchmarkDotNet(NuGet获取),对每个benchmark方法生成独立的工程,自动选择迭代次数,热身,过载开销预估等。

为减少编译环境的影响,需要生成Release版本,并在cmd中运行。Debug模式,会慢10~100倍。

using BenchmarkDotNet.Configs;
using BenchmarkDotNet.Running;
using System;

static void Main(string[] args)
{
    var summary = BenchmarkRunner.Run<Md5VsSha256>();

    Console.WriteLine(DateTime.Now.ToString() + "END");
    Console.WriteLine("按任意键退出......");
    Console.ReadKey();
}

如果需要Debug模式进行调试,可以进行设置:

static void Main(string[] args)
{
    // debug
    BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args,
        new DebugInProcessConfig());
        
    Console.ReadKey();
}

需要测试的方法,用 BenchmarkAttribute 标记。

using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Engines;
using BenchmarkDotNet.Jobs;
using System;
using System.Security.Cryptography;

//[SimpleJob(RunStrategy.Throughput)]
[SimpleJob(RuntimeMoniker.Net47, baseline:true)]
//[SimpleJob(RuntimeMoniker.NetCoreApp30)]
[MinColumn, MaxColumn, MeanColumn, MedianColumn]
[RPlotExporter]
[MemoryDiagnoser]
//[ThreadingDiagnoser]    // .NET Core 3.0
public class Md5VsSha256
{
    private readonly SHA256 _sha256 = SHA256.Create();
    private readonly MD5 _md5 = MD5.Create();
    private byte[] _data;

    // 1. 参数初始化,2个值或多个
    [Params(1000, 10000)]
    public int Num;

    // 2. 每个Num执行一次
    [GlobalSetup]
    public void Setup()
    {
        _data = new byte[Num];
        new Random(42).NextBytes(_data);
    }

    // 3. 测试方法
    [Benchmark]
    public byte[] Sha256()
    {
        return _sha256.ComputeHash(_data);
    }

    // 3. 
    [Benchmark]
    public byte[] Md5()
    {
        return _md5.ComputeHash(_data);
    }

    // 4. 所有的测试方法执行后,每个方法执行一次
    public void GlobalCleanup()
    {
        //
    }

    //[Benchmark]
    //[Arguments(100, 10)]
    public void Benchmark(int a, int b)
    {

    }
}

标签:Console,基准,BenchMark,BenchmarkDotNet,void,测试,using,data,public
From: https://www.cnblogs.com/wesson2019-blog/p/16931566.html

相关文章

  • Vulnhub之Nully Cybersecurity靶机详细测试过程
    NullyCybersecurity靶机基本信息名称:NullyCybersecurity:1地址:提示:Whileworkingwiththemachine,youwillneedtobruteforce,pivoting(usingmetasploi......
  • SDK怎么测试?俺不会啊
    转载请注明出处❤️作者:测试蔡坨坨原文链接:caituotuo.top/7bc8d1c8.html你好,我是测试蔡坨坨。众所周知,在云产品和SaaS蓬勃发展的当下,企业中有许多系统和环节都是依赖于......
  • 自动驾驶测试
    自动驾驶已然成为汽车行业热词。在大家殷切的期盼下,近几年上市的车型,多少都要有和“自动驾驶”功能相关才能赢得消费者青睐。对国内而言,特斯拉落子上海临港,并宣布新推出车......
  • 性能测试中并发用户数的估算
    并发用户数:是指现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(VirutalUser)。 并发用户数和注册用户数、在线用户数的概念不同,1、并发用户数一定......
  • Vulnhub之MoneyBox 1靶机详细测试过程
    MoneyBox作者:jason_huawen靶机基本信息名称:MoneyBox:1地址:https://www.vulnhub.com/entry/moneybox-1,653/识别目标主机IP地址┌──(kali㉿kali)-[~/Vulnhub/Mo......
  • web性能分析与测试工具介绍
    你是否有过以下一些经历?  面试中    说一下做过哪些性能优化?    从输入url到看到页面内容经历了哪些过程?什么是web性能?简单来说就是网站是不是够快......
  • 如何给在 SAP Business Application Studio 里开发的 OData 服务准备测试数据试读版
    在开始本步骤的学习之前,请大家务必完成前一步骤1.SAPBusinessApplicationStudio里创建一个基于CAP模型的最简单的OData服务的学习。换言之,大家已经在SAPBusines......
  • Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告
    摘要本文主要介绍了如何利用Kafka自带的性能测试脚本及KafkaManager测试Kafka的性能,以及如何使用KafkaManager监控Kafka的工作状态,最后给出了Kafka的性能测试报告。......
  • 使用 Linux 命令 curl 和 telnet 测试接口连通性
    摘要:接口可用性诊断利器curl和Telnet。综述  Linux中的命令curl是利用URL语法在命令行模式下工作的开源文件传输工具,它可以被用于测试API接口,查看响应头和发出HTT......
  • 自动化测试之图片验证码识别
    importddddocrfromseleniumimportwebdriver打开网页driver=webdriver.Chrome()driver.implicitly_wait(5)获取验证码元素pic_ele=driver.find_element('xpat......