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();
    }
}

Я почти уверен, что сделал много вещей неправильно (так как это не работает); Я всегда получаю сообщение "Бенчмарк не найден", и по найденным образцам я не могу найти, как заставить его работать.

Я хотел бы десериализовать примерно в 1000 раз тот же самый ответ от URL-адреса, заданного с помощью NewtonSoft и ServiceStack, и получить от него хороший эталонный тест. Как я могу заставить этот код работать и что я сделал не так?

0 ответов

И класс, и методы должны быть общедоступными и не могут быть статическими. Класс также не должен быть запечатанным.

Другие вопросы по тегам