指针和引用中的优化?

时间:2014-01-12 16:23:43

标签: c# pointers reference

我使用指针和参考进行了以下简单的实验 我创建了两个函数SwapSwapByReference,其代码如下: -

 void Swap(int* num1, int* num2)
 {
      int temp = *num1 ; 
      *num1 = *num2 ; 
      *num2 = temp ; 
  }
 void SwapByReference(ref int num1, ref int num2)
 {
      int temp ; 
      temp = num1 ; 
      num1 = num2 ; 
      num2 = temp ; 
 }

然后,我使用了一个List<int>并使用for循环向其添加了1亿个值。 之后,我像这样调用了列表中的SwapSwapByReference函数。

    for (int i = 0; i < MaxValue - 1; i++)
        {
            int num1 = list1[i] ;  // num1p and num2p are of type int*
                                   // MaxValue is equal to 100 million.
                                  // list1 is of type List<int> which contains MaxValue elements in it.
            int num2 = list1[i+1] ; 
            num1p = &num1 ; 
            num2p = &num2 ;  
            Swap(num1p, num2p);
        }

    for (int i = 0; i < MaxValue - 1; i++)
        {
            int num1 = list1[i];
            int num2 = list1[i + 1];
            SwapByReference(ref num1, ref num2);
        }

之后,我为MaxValue的不同值运行此代码,如1亿,1千万,1百万,(有和没有优化),并注意到有关运行上述代码所花费的时间的观察,并计算对于指针和参考,不同的b / w优化和不优化的代码用于不同的MaxValue 1亿

  

掉期功能= 5509.6
  SwapByReference函数= 5549.5

1000万

  

掉期功能= 553.6
  SwapByReference函数= 718.6

100万

  

掉期功能= 37.6
  SwapByReference = 56.8

所有上述观察都是以毫秒为单位,我使用System.Diagnostics.Stopwatch来衡量时间 我的问题是,与指针相比,为什么在引用的情况下优化更多?
在这种情况下,引用有什么特别之处吗?

0 个答案:

没有答案