c# - C#中指针的性能和使用

标签 c# .net pointers

与仅使用托管代码相比,在 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/

相关文章:

c# - 了解类 SmtpDeliveryMethod

c - 在 C 中操作链表时如何解决这个段错误问题?

c# - 如何使用 ObjectListView 或 TreeListView 显示树结构

c# - 'ClosedXML.Excel.XLWorkbook' 的类型初始值设定项抛出异常

c# - 保存 3D int 数组的最快方法? (XNA\C#)

python - ctypes 将指针传递给结构中的字段

合并内存并处理 C 中的指针运算

c# - 为什么 Visual Studio 监 window 口显示集合中 ValueTuples 的错误值?

c# - 编译 .NET 程序集时,名称中包含 x__ 的类是什么?

c# - 来自数据库的 WCF Web json 服务?读数错误