返回顶部
首页 > 资讯 > 精选 >如何使用BenchmarkDotNet对C#代码进行基准测试
  • 299
分享到

如何使用BenchmarkDotNet对C#代码进行基准测试

2023-06-14 07:06:44 299人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关如何使用Benchmarkdotnet对C#代码进行基准测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。BenchmarkDotNet 是一个轻量级,开源的,强大的 .net 工具包,

这篇文章给大家分享的是有关如何使用BenchmarkdotnetC#代码进行基准测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

BenchmarkDotNet 是一个轻量级,开源的,强大的 .net 工具包,它可以将你的方法转化为基准并跟踪这些方法,最后对这些方法的性能提供一些测试报告,使用 BenchmarkDotNet 玩 基准测试 是非常容易的。

你可以利用 BenchmarkDotNet 在 .NET Framework 和 .net core 应用程序上实现基准测试,在这篇文章中,我们将会讨论如何在 .Net Core 中实现基准测试。

安装 BenchmarkDotNet

要想使用 BenchmarkDotNet,要么通过 Nuget 可视化窗口安装 BenchmarkDotNet,要么使用NuGet Package Manager Console 命令行窗口输入如下命令。

Install-Package BenchmarkDotNet

什么是基准测试

基准测试 是对应用程序的一段代码的性能提供一个或者一组度量值,度量代码本质上来说就是让你清楚的了解你的应用程序的性能到底是怎么样的,当你想优化代码的时候,如果手边有这些性能度量值那该有多好呀~ 基准测试也可以帮助我们缩小到那些必须要重构的代码。

创建基准测试代码

新建 BenchmarkDotNet 类,类定义如下

    [MemoryDiagnoser]    public class MemoryBenchmarkerDemo    {        int NumberOfItems = 100000;        [Benchmark]        public string ConcatStringsUsingStringBuilder()        {            var sb = new StringBuilder();            for (int i = 0; i < NumberOfItems; i++)            {                sb.Append("Hello World!" + i);            }            return sb.ToString();        }        [Benchmark]        public string ConcatStringsUsingGenericList()        {            var list = new List<string>(NumberOfItems);            for (int i = 0; i < NumberOfItems; i++)            {                list.Add("Hello World!" + i);            }            return list.ToString();        }    }

上面的代码展示了如何做 基准测试, 做法很简单,在方法上标记 Benchmark 特性即可,接下来就可以 Main 方法中启动 基准测试,代码如下:

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

运行 benchmark

值得注意的是,一定要用 release 模式运行,如果用debug的话,会抛如下错误的。

如何使用BenchmarkDotNet对C#代码进行基准测试

调整为 release 模式后,将程序跑起来,要稍微跑一段时间,最后将会看到 console 输出如下的 summary。

如何使用BenchmarkDotNet对C#代码进行基准测试

从图中可以看到,summary中会包含比如:BenchmarkDotNet版本,操作系统,计算机硬件,.NET版本,编译器信息和一些应用程序相关的性能信息,从图中也可以看出 ConcatStringUsingStringBuilder 方法比  ConcatStringUsingGenericList 方法性能更高,付出的代价就是占用更多的内存。

接下来在 MemoryBenchmarkerDemo 类上标注 RankColumn 标记,这样会在输出结构中多一个给程序排名的 Rank 列,修改代码如下:

    [MemoryDiagnoser, RankColumn]    public class MemoryBenchmarkerDemo    {        ...    }

接下来再将程序跑起来,观察最后的 summary,可以清楚的看到多了一个 Rank 列。

如何使用BenchmarkDotNet对C#代码进行基准测试

感谢各位的阅读!关于“如何使用BenchmarkDotNet对C#代码进行基准测试”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 如何使用BenchmarkDotNet对C#代码进行基准测试

本文链接: https://lsjlt.com/news/268816.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用 BenchmarkDotNet 对 C# 代码进行基准测试
    目录安装 BenchmarkDotNet 什么是基准测试 创建基准测试代码 运行 benchmark BenchmarkDotNet 是一个轻量级,开源的,强大的 .NET 工具包,...
    99+
    2024-04-02
  • 如何使用BenchmarkDotNet对C#代码进行基准测试
    这篇文章给大家分享的是有关如何使用BenchmarkDotNet对C#代码进行基准测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。BenchmarkDotNet 是一个轻量级,开源的,强大的 .NET 工具包,...
    99+
    2023-06-14
  • 如何对 C++ 函数性能进行基准测试?
    为 c++++ 函数进行基准测试,可采取以下步骤:使用计时工具(如 std::chrono 库)测量执行时间。编写基准测试函数以执行代码并返回执行时间。利用基准测试库获取高级功能,如统计...
    99+
    2024-04-19
    性能基准测试 git c++
  • python如何进行基准测试
    基准测试属于性能测试的一种,用于评估和衡量软件的性能指标。我们可以在软件开发的某个阶段通过基准测试建立一个已知的性能水平,称为"基准线"。当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。 ...
    99+
    2022-06-02
    python 基准测试 python 测试
  • 如何使用springboot对各层的代码进行测试
    小编给大家分享一下如何使用springboot对各层的代码进行测试,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  因为近段时间在一个系统,后端代码使用的技术栈是...
    99+
    2023-06-04
  • 怎么使用HammerDB进行MySQL基准测试
    使用HammerDB进行MySQL基准测试的步骤如下: 首先,下载并安装HammerDB。你可以在HammerDB的官方网站(h...
    99+
    2023-10-24
    HammerDB MySQL
  • 如何进行C++代码的性能测试?
    如何进行C++代码的性能测试概述:在软件开发过程中,性能测试是一项非常重要的任务。对于C++代码来说,性能测试可以帮助开发人员了解代码的执行效率,找到性能瓶颈,并对其进行优化。本文将介绍一些常用的C++代码性能测试方法和工具,帮助开发人员提...
    99+
    2023-11-02
    测试 性能测试 C++代码
  • Sysbench对Mysql进行基准测试过程解析
    前言 1.基准测试(benchmarking)是性能测试的一种类型,强调的是对一类测试对象的某些性能指标进行定量的、可复现、可对比的测试。 进一步来理解,基准测试是在某个时候通过基准测试建立一个已知的性能水平(称为...
    99+
    2022-05-10
    Sysbench Mysql 基准测试
  • MySQL中怎么使用hammerdb进行基准测试
    今天就跟大家聊聊有关MySQL中怎么使用hammerdb进行基准测试,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。root@master /usr/...
    99+
    2024-04-02
  • Java如何使用junit框架进行代码测试
    这篇文章主要介绍了Java如何使用junit框架进行代码测试的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何使用junit框架进行代码测试文章都会有所收获,下面我们一起来看看吧。我写了一个时间工具类 ...
    99+
    2023-07-05
  • Java使用JMH进行基准性能测试分析
    本篇内容主要讲解“Java使用JMH进行基准性能测试分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java使用JMH进行基准性能测试分析”吧!一、前言在日常开发工作当中,开发人员可能有这些困...
    99+
    2023-06-25
  • 详解Java使用JMH进行基准性能测试
    目录一、前言 二、JMH概述 1、什么是JMH 2、JMH适用的典型场景 3、JMH基本概念 三、JMH的使用 1、快速跑起来 2、JMH常用注解详细介绍 四、小结 附: 一、前言 ...
    99+
    2024-04-02
  • 如何使用 Go 标准库进行单元测试
    go 标准库通过 testing 包提供了单元测试功能,只需创建 _test.go 文件并编写测试函数即可。测试函数使用断言函数,如 assertequal 和 asserttrue,比...
    99+
    2024-04-30
    单元测试 标准库
  • 工具 | 如何对 MySQL 进行 TPC-C 测试?
    作者:丁源 RadonDB 测试负责人 负责 RadonDB 云数据库、容器化数据库的质量性能测试,迭代验证。对包括云数据库以及容器化数据库性能和高可用方案有深入研究。 |背景 根据 DWorks 2020 年发布的《中国自研数据库登...
    99+
    2015-03-18
    工具 | 如何对 MySQL 进行 TPC-C 测试?
  • 如何进行C++代码的调试?
    如何进行C++代码的调试引言:在编写C++代码时,难免会遇到各种Bug和错误。调试是程序开发中非常重要的一部分,因为它可以帮助我们找到问题所在并修复它们。本文将介绍一些常用的C++代码调试技巧和工具,帮助读者更好地进行C++代码调试。一、使...
    99+
    2023-11-02
    调试 C++ 代码编程
  • 使用sysbench对MySQL进行测试
    因sysbench版本更新问题,某些命令选项发生改变,查询help进行酌情更改。 https://yq.aliyun.com/articles/66651spm=5176.100239.blogcont6...
    99+
    2024-04-02
  • MySQL如何使用sysbench做OLTP基准测试
    这篇文章给大家分享的是有关MySQL如何使用sysbench做OLTP基准测试的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一、 安装① 下载源码...
    99+
    2024-04-02
  • 如何使用单元测试框架对 Golang 函数进行测试?
    go 中使用单元测试框架进行单元测试:导入 testing 包。编写以 test 为前缀的单元测试函数。使用断言函数(如 assertequal())验证测试结果。运行单元测试(go t...
    99+
    2024-04-16
    golang 单元测试 标准库
  • 如何使用 PHP 内置函数对代码进行调试?
    php 内置调试函数:var_dump() 显示变量详细信息,类型、值、结构。print_r() 以更佳可读格式打印信息,适用于调试复杂数据结构。error_log() 记录消息到错误日...
    99+
    2024-04-22
    调试 php
  • 【星云测试】开发者测试-采用精准测试工具对Spring Boot应用进行测试
    简介:本文主要介绍把现今主流的springboot框架项目和精准测试工具进行结合和应用,通过精准测试的数据穿透、数据采集、测试用例与代码的双向追溯、数据分析等一系列精准测试的特有功能,达到对项目质量的保证。 本次环境搭建分为基础环...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作