首页 > 其他分享 >BenchmarkDotNet-Intro

BenchmarkDotNet-Intro

时间:2023-10-09 13:45:12浏览次数:58  
标签:基准 Benchmark BenchmarkDotNet Intro 测试 dotnet ns

有些时候我们实现了某个功能, 但是仅仅通过有限的几次调用无法知道这个功能的执行效率以及资源占用情况, 此时就可以使用 Benchmark 对这个功能进行基准测试

dotnet 中主要使用 BenchmarkDotNet

benchmarkdotnet

BenchmarkDotNet 是一个.NET的基准测试框架, 主要用于测量.NET程序的性能

它可以帮助开发者编写基准测试, 并自动运行这些测试, 生成详细的基准报告

BenchmarkDotNet 的主要功能包括:

  • 简化基准测试的编写, 通过属性来标记要测试的方法
  • 支持多种基准测试模式, 如平均时间、内存分配等
  • 自动进行基准测试的运行和统计
  • 生成详细的基准报告, 包括表格、图形等
  • 支持基准结果的持久化, 可以比较不同版本的性能
  • 丰富的配置选项, 可以自定义基准测试的细节

一般我们在文章中看到的基准测试都是用这个框架做的

例子

测试dotnet中的 IsNullOrEmptyIsNullOrWhiteSpace, 具体代码如下

using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
BenchmarkRunner.Run(typeof(Test));
public class Test
{
    [Benchmark] public void TestEmpty() => string.IsNullOrEmpty("");
    [Benchmark] public void TestWhiteSpace() => string.IsNullOrWhiteSpace("");
}

写好基准测试的例子后需要使用命令执行, 注意必须要在 Release 模式下运行

dotnet run -c Release

耐心等待执行完成, 期间输出的东西都不需要细看, 直接看最后生成的表格

Method Mean Error StdDev
TestEmpty 0.0121 ns 0.0123 ns 0.0102 ns
TestWhiteSpace 1.7137 ns 0.0306 ns 0.0255 ns

标签:基准,Benchmark,BenchmarkDotNet,Intro,测试,dotnet,ns
From: https://www.cnblogs.com/CollapseNav/p/17751518.html

相关文章

  • C++ Profiler Introduction [CPU Time Only]
    C++ProfilerIntroduction[CPUTimeOnly]author:LastWhisperdate:2023/10/05ThereareseveralprofilersforC++.Basedonmyresearch,I'vefoundthattracyisthemostpowerful.However,it'schallengingtoconfigure.Toquicklybenchmark......
  • Prometheus - Introduction
    Prometheusisgenerallyapull-basedsystem.Thiswouldinvolvetheapplicationjustexposingan endpointexternallyinaformatthatPrometheusunderstands. WewouldtheninstallPrometheusonanotherseparateserver,whichwouldthen requireustorely......
  • 如何写论文的 abstract摘要和introduction背景介绍
    摘要是题目的扩展、简介是摘要的扩展、正文是简介的扩展,逻辑紧密,环环紧扣。无论是摘要、简介还是正文,围绕的核心都是一个点:题目,突出的是工作内容+创新点。其实无论是核心还是sci,写科技文就像是写八股文,套路都是一样的。下面提供一点写摘要和背景介绍的思路和建议。如何写abstract......
  • NetBenchmarkDotNet性能测试
    案例usingBenchmarkDotNet.Attributes;usingBenchmarkDotNetDemo.Model;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Runtime.InteropServices;usingSystem.Text;usingSystem.Threading.Tasks;namespaceBenchmarkDotNetDemo......
  • 【笔记】在线凸优化 - Ch1. Introduction
    1.1TheOnlineConvexOptimizationSetting在线凸优化Onlineconvexoptimization(OCO),是一个带有博弈论、统计学习、凸优化的新玩意给出如下问题叙述:考虑一种博弈游戏,回合制,第\(t\in[T]\)回合,先由玩家从决策集\({\calK}\in\mathbb{R}^n\)中选择一个决策\({\bfx}......
  • 【AL】QUBO Models Introduction
    1Introduction 2ApplicationQuadraticAssignmentProblemsCapitalBudgetingProblemsMultipleKnapsackProblemsTaskAllocationProblems(distributedcomputersystems)MaximumDiversityProblemsP-MedianProblemsAsymmetricAssignmentProblemsSymmetr......
  • Container Runtime Intro
    https://www.tutorialworks.com/difference-docker-containerd-runc-crio-oci/......
  • 引言(Introduction)
    1.2机器学习是什么?ArthurSamuel:他定义机器学习为,在进行特定编程的情况下,给予计算机学习能力的领域。Tom(卡内基梅隆大学)定义的机器学习是,一个好的学习问题定义如下,一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当有了经验E后,经过P评判,程序在处理T时的性能有......
  • 我的BIOS之行1-Introduction
    前言想对自己在本月所学的东西做一个总结,因而产生了写本系列博客的冲动,由于工作较为繁忙,不能及时更新,敬请原谅CPUIntroduction&Multi-Processor本节博客将简单介绍CPU的情况。1、CPU简介CPU–TheCentralProcessorUnitisthehardwarewithinacomputersystemwhic......
  • 阅读笔记 An introduction to inertial navigation
    摘要小巧轻量的MEMS惯性传感器最*在性能上的提升,使得惯性技术可以应用到诸如人体运动捕获这样的领域。这使得对惯性导航的研究兴趣被激发,然而目前对这个主题的导论都没有充分讲清楚惯性系统的误差特性(errorcharacteristic)。引言这是一篇剑桥大学OliverJ.Woodman写的技术报告......