单元测试的性能测试库

今天在github上面看到一个新秀BenchmarkDotNet。查了一下, 现在网上中文资料似乎只有这么一篇介绍:

不要手动StopWatch了,让BenchmarkDotNet帮你。 http://www.cnblogs.com/rader/p/4920862.html

看了介绍,但是blog比较久,也不全。还是按照官方的文档一步一步来,真真是好东西。

这是一个单元测试的性能测试库,经过使用测试,完全兼容了XUnit单元测试,漂亮。

Nuget: https://www.nuget.org/packages/BenchmarkDotNet/

Project Site: https://github.com/PerfDotNet/BenchmarkDotNet

安装BenchmarkDotNet

PM> Install-Package BenchmarkDotNet

例子

public class Md5VsSha256
{
    private const int N = 10000;
    private readonly byte[] data;

    private readonly SHA256 sha256 = SHA256.Create();
    private readonly MD5 md5 = MD5.Create();

    public Md5VsSha256()
    {
        data = new byte[N];
        new Random(42).NextBytes(data);
    }

    [Benchmark]
    public byte[] Sha256()
    {
        return sha256.ComputeHash(data);
    }

    [Benchmark]
    public byte[] Md5()
    {
        return md5.ComputeHash(data);
    }
}

运行

var summary = BenchmarkRunner.Run<Md5VsSha256>();

输出

// * Summary *
BenchmarkDotNet=v0.9.1.0
OS=Microsoft Windows NT 6.1.7601 Service Pack 1
Processor=Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz, ProcessorCount=4
Frequency=3020400 ticks, Resolution=331.0820 ns
HostCLR=MS.NET 4.0.30319.42000, Arch=64-bit RELEASE [RyuJIT]

Type=BenchmarkTest  Mode=Throughput  

 Method |     Median |    StdDev |
------- |----------- |---------- |
    xxx | 58.4725 ns | 0.5935 ns |

// ***** BenchmarkRunner: End *****

posted on 2016-03-01 09:52  艾晨爸  阅读(273)  评论(0编辑  收藏  举报

导航