小编cat*_*hei的帖子

为什么使用嵌套泛型类型的调用在 C# 中性能较差?

我在实现无分配 Linq 时遇到了有趣的案例。当我稍微更改代码时,基准测试时间突然增加,我认为更改是微不足道的。我将范围缩小到这个测试代码:

    [Benchmark]
    public int ComparingGenericArgument1()
    {
        var comparer = new Wrap<int>(Comparer<int>.Default);
        return CompareSum<Wrap<int>>.Calc(10000, comparer);
    }

    [Benchmark]
    public int ComparingGenericArgument2()
    {
        var comparer = new Wrap<int, Comparer<int>>(Comparer<int>.Default);
        return CompareSum<Wrap<int, Comparer<int>>>.Calc(10000, comparer);
    }

    static class CompareSum<TComparer> where TComparer : struct, IComparer<int>
    {
        public static int Calc(int count, TComparer comparer)
        {
            int sum = 0;

            for (int i = 0; i < count; ++i)
            for (int j = 0; j < count; ++j)
                sum += comparer.Compare(i, j);

            return sum;
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# generics performance

7
推荐指数
1
解决办法
164
查看次数

标签 统计

c# ×1

generics ×1

performance ×1