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

时间:2011-10-10 13:26:02

标签: c# .net-4.0

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

3 个答案:

答案 0 :(得分:5)

获取固定内存位置并将索引转换为指针所花费的时间可能会产生负面影响,具体取决于您尝试执行的操作。只有真实的方法才能将其作为safeunsafe进行尝试,看看哪个更快。 (我的经验是安全工作通常更快......我非常惊讶。)

答案 1 :(得分:4)

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

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

此外,不安全的代码需要以某些权限运行,因此可能不适合所有deplyoment目标。

答案 2 :(得分:3)

编组参数和结果通常会受到惩罚。