由于某种原因,“大型”尝试块的性能不如小型吗?

时间:2019-08-01 13:54:30

标签: .net performance exception try-catch

我读了一些我不理解的东西:

“避免使用带有过多代码量的try块,特别是如果抛出的代码不立即与其相关或不依赖于它。这是因为大型代码体(在方法和块中)可以在运行时通过以下方式先行禁用优化:即时编译器(JIT)。” https://www.hexacta.com/2017/02/03/advanced-exceptions-in-net/

这是否表明我不应该使用长方法,因为无法进行某些编译器优化?还是建议我不要包装例如代表一个大try块内的线程循环的大部分代码,而应使用一堆较小的代码呢?显然,就错误处理而言,正确性更为重要,但这意味着什么?

1 个答案:

答案 0 :(得分:0)

这是一个有趣的问题,因为我一直认为,抛出和处理异常的开销比抢先捕获错误要高得多。我想是因为VM不得不解开堆栈等等,只要有异常就可以。

因此,一旦引发了异常(花费了很长时间),如果catch(或最后)块中有大量的异常处理代码,那又有什么关系呢?我很感兴趣地看着这个。