gpt4 book ai didi

.net - 为什么尝试 block 很昂贵?

转载 作者:行者123 更新时间:2023-12-03 06:03:16 26 4
gpt4 key购买 nike

我听说过这样的建议:如果可能的话,您应该避免使用 try catch block ,因为它们很昂贵。

我的问题专门针对 .NET 平台:为什么 try block 很昂贵?

回复摘要:

在这个问题上显然有两个阵营:一些人说 try block 很昂贵,另一些人说“也许有点点”。

那些说 try block 成本高昂的人通常会提到展开调用堆栈的“高成本”。就我个人而言,我并不相信这个论点 - 特别是在阅读了异常处理程序如何存储之后here .

Jon Skeet 属于“也许一点点”阵营,并撰写了两篇关于异常和性能的文章,您可以在 here 找到这些文章。 .

我发现一篇文章非常有趣:它讨论了 try block 的“其他”性能影响(不一定是内存或 CPU 消耗)。 Peter Ritchie 提到,他发现 try block 内的代码并未像编译器那样进行优化。您可以阅读他的发现here .

最后,有一篇来自在 CLR 中实现异常的人关于该问题的博客文章。去看看 Chris Brumme 的文章 here .

最佳答案

并不是 block 本身很昂贵,而且它甚至没有捕获异常,本身就很昂贵,而是运行时展开调用堆栈,直到找到可以处理异常的堆栈帧。抛出异常是相当轻量级的,但是如果运行时必须遍历六个堆栈帧(即六个方法调用深度)才能找到合适的异常处理程序,可能会执行finally block ,那么您可能会看到明显的时间流逝.

关于.net - 为什么尝试 block 很昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/164613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com