具有异步任务的BenchmarkDotNet

时间:2018-03-28 14:00:04

标签: c# benchmarkdotnet

我正在尝试运行此代码:

public class Parsing
{
    private const string Url ="blabla";
    private static HttpClient client = new HttpClient();

    private static Task<string> newton = ParseNewton();
    private static Task<string> servicestack = ParseServiceStack();

    [Benchmark]
    private static async Task<string> ParseNewton()
    {

        var response = client.GetAsync(Url).Result;

        var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);

        var serializer = new Newtonsoft.Json.JsonSerializer();

        using (var sr = new StreamReader(stream))
        using (var jsonTextReader = new JsonTextReader(sr))
        {
            return serializer.Deserialize<string>(jsonTextReader);
        }

    }

    [Benchmark]
    private static async Task<string> ParseServiceStack()
    {

        var response = client.GetAsync(Url).Result;

        var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false);

        return ServiceStack.Text.JsonSerializer.DeserializeFromStream<string>(stream);

    }
}

电话是

internal class Program
{
    public static void Main(string[] args)
    {
        var summary = BenchmarkRunner.Run<Parsing>();

        Console.ReadKey();
    }
}

我很确定我做了很多错事(因为它不起作用);我总是收到No Benchmark发现的消息,从我发现的样本中我找不到如何使它工作。

我想将NewtonSoft和New提供的url的响应相同的1000次反序列化。 ServiceStack并从中获得一个很好的基准。我怎样才能使这段代码工作?我做错了什么?

1 个答案:

答案 0 :(得分:1)

类和方法都必须是公共的,并且不能是静态的。该类也不得密封。