我希望您能告诉我在C#中
我发现它非常适用于处理较小的数组,但随着数组变得越来越大,性能开始下降,尽管由于反向过程的内存性质,它似乎具有最好的内存应用。
第二种最值得注意的反转数组的方法是使用一个临时数组,我不会写出来,因为它非常简单。但基本上将初始数组的第一个元素设置为临时数组的最后一个元素,依此类推。当内存不是问题时,这种方法往往是最快的方法。
所以我的问题是,
Array.Reverse()
编译成什么样子,以及做了哪些优化。我的研究让我走了多条路线,其中一些值得注意的是像这样使用XOR方法:Reverse(Array)
{
for(int i = 0, int len = Array.Length; i < Array.Length, i++ len--)
{
Array[i] ^= Array[len];
Array[len] ^= Array[i];
Array[i] ^= Array[len];
}
}
我发现它非常适用于处理较小的数组,但随着数组变得越来越大,性能开始下降,尽管由于反向过程的内存性质,它似乎具有最好的内存应用。
第二种最值得注意的反转数组的方法是使用一个临时数组,我不会写出来,因为它非常简单。但基本上将初始数组的第一个元素设置为临时数组的最后一个元素,依此类推。当内存不是问题时,这种方法往往是最快的方法。
所以我的问题是,
Array.Reverse()
是否使用特定的方法?如果没有,它如何确定使用哪种方法?这实际上归结为我是否应该信任系统库和编译器决定什么是最快的解决方案,以及我应该信任那个决定多少。