小编Rai*_*ree的帖子

在C#中内联方法的成本

我最近在C#中实现了QuickSort算法.对包含数百万个项目的整数数组进行排序,代码的性能比.NET的实现大约低10%.

private static void QS(int[] arr, int left, int right)
{
    if (left >= right) return;

    var pIndex = Partition(arr, left, right);
    QS( arr, left, pIndex);
    QS( arr, pIndex + 1, right);
}
Run Code Online (Sandbox Code Playgroud)

在包含500万个项目的数组中,此代码比.NET慢大约60ms.

随后,我创建了另一个方法,该Partition()方法具有内联方法QS()(消除方法调用和return语句).然而,这导致性能下降到比.NET的排序方法慢约250ms.

为什么会这样?

编辑:这是该Partition()方法的代码.在内联版本中QS(),除了return语句之外,此方法的全部内容都替换了该var pIndex = Partition(arr, left, right);行.

private static int Partition(int[] arr, int left, int right)
{
    int pivot = arr[left];
    int leftPoint = left - 1;
    int pIndex = …
Run Code Online (Sandbox Code Playgroud)

c# performance inline quicksort

15
推荐指数
1
解决办法
631
查看次数

标签 统计

c# ×1

inline ×1

performance ×1

quicksort ×1