C# 使用/unsafe进行编译可能存在的缺点
为了使用指针,我必须使用/unsafe编译程序集。我想知道使用/unsafe编译时的差异。请假设没有编程错误,例如指针的无效使用等。如果使用不安全的编译程序集,是否会损失一些性能?内存有问题吗 不安全代码可以通过删除数组边界检查来提高应用程序的性能 使用不安全代码会带来安全和稳定性风险 链接:好吧,使用“不安全”代码基本上可以提高性能,直接访问内存和指针。通常情况下,在.NET代码中使用这种方法是为了提高性能,例如C# 使用/unsafe进行编译可能存在的缺点,c#,visual-studio,.net-assembly,unsafe,C#,Visual Studio,.net Assembly,Unsafe,为了使用指针,我必须使用/unsafe编译程序集。我想知道使用/unsafe编译时的差异。请假设没有编程错误,例如指针的无效使用等。如果使用不安全的编译程序集,是否会损失一些性能?内存有问题吗 不安全代码可以通过删除数组边界检查来提高应用程序的性能 使用不安全代码会带来安全和稳定性风险 链接:好吧,使用“不安全”代码基本上可以提高性能,直接访问内存和指针。通常情况下,在.NET代码中使用这种方法是为了提高性能,例如3D渲染内核引擎。在100%.NET代码中编写这样的东西会使应用程序速度太慢,所以
3D
渲染内核引擎。在100%
.NET
代码中编写这样的东西会使应用程序速度太慢,所以指针会起到帮助作用,特别是当我们需要处理C/C++
库之间的“桥梁”时,比如OpenGL
(比如说)
长话短说:如果你写了一个好的非托管代码,你肯定会从中受益。我不认为这意味着你的普通asp.net网站或web表单应用程序会受益。只有在完成正确的代码分析之后,才能做出这样的决定。@asawyer:一般来说,转移到不安全代码并不是为了提高性能。当您有几个成本时,您就可以这样做:例如,访问som C/C++库。在不安全的代码内和代码外处理这些东西会产生不同。我没有到处宣传使用不安全的代码,但考虑到你选择了它,你有很好的理由这么做。当然,我只是有点担心有人可能会错误地阅读你的答案(这是完全正确的),因为你说,为了模糊的“性能提升”,继续在任何应用程序中使用它原因。@asawyer:如果你真的很关心性能,并且在非托管代码中感觉很好,那么就用C/C++编写代码。好的C/C++代码是未编写的。