使用/unsafe编译的潜在缺点

4

为了使用指针,我必须使用 /unsafe 编译我的汇编代码。我想知道在使用 /unsafe 编译时有什么不同之处。请假设没有编程错误,如无效的指针使用等。如果我使用不安全编译的汇编代码,是否会损失性能?是否存在任何内存缺陷?

2个回答

3

使用“不安全”的代码可以大幅提高性能,直接访问内存和指针算术运算。通常使用它的情况是在.NET代码中专注于高性能,例如3D渲染核心引擎。将此类内容写入100%.NET代码会使应用程序变得太慢,因此指针就可以挽救局面,尤其是当我们需要处理C/C++库之间的“桥梁”时,比如OpenGL。

长话短说:如果编写良好的非托管代码,则一定会受益。


我并不认为你的普通asp.net网站或Web表单应用程序会从中受益。在进行适当的代码分析之后,才应该做出这样的决定。 - asawyer
@asawyer:一般来说,转向不安全代码并不是为了提高性能而做的。你只有在有几个限制条件时才会这样做:例如访问某些C/C++库。在不安全代码内部和外部处理此类内容是有区别的。我并不宣传到处使用不安全代码,但考虑到你选择了它,你肯定有充分的理由这样做。 - Tigran
1
当然,我只是有点担心有人会错误地理解你的答案(这是完全正确的),认为可以出于模糊的“性能提升”原因在任何应用程序中使用它。 - asawyer
@asawyer:如果你真的关心性能,并且在非托管代码中感觉非常好,那就用C/C++编码吧。良好编写的C/C++代码是无懈可击的。 - Tigran

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接