Start Debugging

Производительность .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.

< Назад