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 ответов
И класс, и методы должны быть общедоступными и не могут быть статическими. Класс также не должен быть запечатанным.