与仅使用托管代码相比,在 C# 中使用指针是否具有显着的性能优势? c# 中指针的最佳用例是什么?我真的没有任何具体的例子,我以前从来不需要使用它们。似乎使用指针可以更快地操作数据,但最终可能一切都微不足道。我什至考虑它们的唯一原因是因为我正在创建一个 Matrix 类(仅用于学习目的)并且我想尝试使所有计算尽可能高效。
最佳答案
Does using pointers in c# have any significant performance advantages compared to using only managed code?
有时。
What would the best use cases for pointers be in c#?
对性能极其敏感的代码,以及与现有非托管代码的互操作性。
I dont really have any specific examples in mind and I have never needed to use them before.
我已经编写 C# 代码大约十年了,我不记得在实际的“业务线”代码中需要使用指针。测试用例,当然。但不适用于生产。
I want to try to make all the calculations as efficient as possible.
我在 StackOverflow 上经常听到这种说法。不,你实际上不想要那个。您希望在给定一定预算的情况下尽可能提高它们的效率。例如,您可能不愿意在新的数学芯片制造上投入数十亿美元。 有些人愿意这样做,但您不是其中之一。有些人有那么多钱可以花,如果他们有技术,他们可以解决问题并从中获利。 给定一组现有技术并且给定您愿意投入的一定时间和精力,您可能愿意使其尽可能高效.因为您的目标实际上并不是写出快速的数学,您的目标是学习如何优化程序。
在这种情况下,学习如何优化程序。优化程序的方法是使用分析工具 来识别代码中的问题点,然后根据数据 决定是否探索不安全代码解决方案的成本和 yield 。例如,您的大部分成本可能是由于缓存未命中造成的,而您真正需要的是更好的局部性而不是更少的数组范围检查。或者您可能会发现,对于您的问题空间,记忆化是一种更好的技术。有很多方法可以使程序更快,但如果没有数据,您无法知道自己是否变得更好。
关于c# - C#中指针的性能和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309545/