使用不安全的代码是否有任何性能损失或线程上下文切换?

Bop*_*Bop 3 c# .net-4.0

如果我想在一个非常时间敏感的应用程序中使用一些不安全的代码 - 在'swiching'到不安全的代码或线程上下文切换时会有任何延迟吗?C#.net 4

seh*_*ehe 5

原则上:没有。重点是您绕过了一些托管运行时检查和限制。

这就是说,它理论上可能的JIT引擎可以在极少数情况下,应用较少的优化,由于较少的假设,可在不安全的代码块进行。编辑实际上,Matthew 提出的关于固定堆内存的观点是这个方向的一个主要例子。JIT-ter 和 GC 引擎受到更多限制,可以做更少的假设

此外,不安全的代码需要以特定权限运行,因此它可能不适用于所有部署目标。


Mat*_*ted 5

获取固定内存位置并将索引转换为指针所需的时间可能会产生负面影响,具体取决于您尝试执行的操作.后来才知道真正的方法是尝试,因为既safeunsafe,看看这是更快.(我的经验是安全工作通常更快......我非常惊讶.)