数据图表在线生成 在线图表生成网站



文章插图
数据图表在线生成 在线图表生成网站

文章插图
起因
BenchmarkDotNet支持将性能测试的结果导出为多种格式,常用的一般为html/csv,其实BenchmarkDotNet支持生成很多种文件格式.
支持的文件格式:
BenchmarkDotNet支持生成很多种文件
BenchmarkDotNet生成图表是依赖R的,BenchmarkDotNet只是生成R的脚本文件,需要R执行脚本生成图表.
测试代码
using System.Runtime.CompilerServices;using BenchmarkDotNet.Attributes;using BenchmarkDotNet.Configs;using BenchmarkDotNet.Exporters;using BenchmarkDotNet.Exporters.Csv;namespace dotnet_perf{[RPlotExporter] //生成r脚本文件[MemoryDiagnoser][DisassemblyDiagnoser(printSource: true)][Config(typeof(Config))]public class MethodInlineTest{[Params(10000)]public int Count { get; set; }public Random Random = new Random();[Benchmark]public void AggressiveInlining(){for (int i = 0; i < Count; i++){int a = Random.Next(1, 100);int b = Random.Next(1, 100);int c = AggressiveInliningTest(a, b);}}[Benchmark]public void AggressiveOptimization(){for (int i = 0; i < Count; i++){int a = Random.Next(1, 100);int b = Random.Next(1, 100);int c = AggressiveOptimizationTest(a, b);}}[Benchmark]public void NoInlining(){for (int i = 0; i < Count; i++){int a = Random.Next(1, 100);int b = Random.Next(1, 100);int c = NoInliningnTest(a, b);}}[MethodImpl(MethodImplOptions.AggressiveInlining)]public int AggressiveInliningTest(int a, int b)//求数的大小{return a > b ? a : b;}[MethodImpl(MethodImplOptions.AggressiveOptimization)]public int AggressiveOptimizationTest(int a, int b)//求数的大小{return a > b ? a : b;}[MethodImpl(MethodImplOptions.NoInlining)]public int NoInliningnTest(int a, int b)//求数的大小{return a > b ? a : b;}private class Config : ManualConfig{public Config(){AddExporter(CsvMeasurementsExporter.Default); //生成csv文件,r脚本生成图表需要AddExporter(RPlotExporter.Default); //使用r默认的配置}}}}【数据图表在线生成 在线图表生成网站】#执行R脚本Rscript.exe .BuildPlots.R看BenchmarkDotNet生成的图表
BenchmarkDotNet 生成图1
BenchmarkDotNet 生成图2