Производительность .NET 8: GetGenericTypeDefinition в 10 раз быстрее
Бенчмарки GetGenericTypeDefinition в .NET 8 по сравнению с .NET 7 показывают почти 10-кратный рост производительности. Смотрите код бенчмарка и результаты, полученные с помощью BenchmarkDotNet.
.NET 8 приносит хорошие улучшения производительности для существующих API, работающих с информацией о типах. Один из таких API, получивший значительный прирост, — это GetGenericTypeDefinition.
В моих бенчмарках реализация в .NET 8 почти в 10 раз быстрее по сравнению с версией в .NET 7.
| Method | Runtime | Mean | Error | StdDev |
|------------------------- |--------- |----------:|----------:|----------:|
| GetGenericTypeDefinition | .NET 7.0 | 13.078 ns | 0.0505 ns | 0.0422 ns |
| GetGenericTypeDefinition | .NET 8.0 | 1.611 ns | 0.0091 ns | 0.0076 ns |
При желании этот бенчмарк можно запустить самостоятельно с помощью BenchmarkDotNet:
[SimpleJob(RuntimeMoniker.Net70)]
[SimpleJob(RuntimeMoniker.Net80)]
public class Benchmarks
{
private readonly Type _type = typeof(List<int>);
[Benchmark]
public Type GetGenericTypeDefinition() => _type.GetGenericTypeDefinition();
}
BenchmarkRunner.Run<Benchmarks>();
Или, если нужен готовый к запуску пример, вы можете клонировать этот репозиторий и запустить GetGenericTypeDefinitionBenchmarks.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.