數據圖表在線生成 在線圖表生成網站



文章插圖
數據圖表在線生成 在線圖表生成網站

文章插圖
起因
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