gpt4 book ai didi

c# - Array.Reverse() 编译成什么?

转载 作者:太空狗 更新时间:2023-10-30 01:21:12 25 4
gpt4 key购买 nike

我想知道 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() 是否使用特定方法?如果不是,它如何确定使用哪种方法?这实际上取决于我是否应该相信系统库和编译器来决定什么是最快的解决方案,以及我应该相信这个决定的确切程度。

最佳答案

Array.Reverse 目前在 .NET 框架中使用临时数组实现。您可以使用 ILSpy 找到它。编译器对此没有发言权。该方法以某种方式实现,编译器在这里没有任何改变。

这是否是最佳解决方案取决于您认为最佳的是什么,因此您需要自己定义它,然后附加一个分析器并验证它。

关于c# - Array.Reverse() 编译成什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16300688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com