编写高性能代码和异常处理

时间:2012-03-19 11:44:13

标签: c#

在高性能的C#程序中(性能是第一关注的),对代码会做出哪些牺牲?

例如,异常处理如何更改(抛出的异常数量减少/异常捕获的异常数量?)?

我问,因为我曾经在一家收集书写的监控公司工作。

由于

5 个答案:

答案 0 :(得分:1)

您可以自己测量性能,并查看异常处理会减慢代码的速度。通常,如果抛出异常,则非常浪费,但如果没有抛出异常,try ... catch只会使代码慢一点。

另一点:Linq比简单的迭代慢。

答案 1 :(得分:1)

通常,只有在严格需要时才应Throw例外,因为它可能会带来性能 那么异常处理的替代方法是什么?

您编写代码来检查输入值并返回每个方法的值,并将返回值传递回调用方。

http://codebetter.com/raymondlewallen/2004/12/13/performance-issues-with-exception-handling/

http://www.codeproject.com/Articles/11265/Performance-implications-of-Exceptions-in-NET

答案 2 :(得分:1)

只有在特殊情况下才会抛出异常。它们不应用于流量控制。一个好的目标是能够在正常使用的情况下在调试器下运行您的应用程序,并且不应该抛出异常。

如果是这种情况,在高性能应用程序中,例外成本如果真的特殊,就不应该成为一个问题。

答案 3 :(得分:0)

异常处理很慢。默认情况下,Exception实例(顾名思义)是一个例外。 但是,如果您希望它们发生很多,您可以决定抛出较少的Exception个对象并以另一种方式处理逻辑异常。换句话说,他们成了预期。

如果它们实际上是意外的,您可以尝试在堆栈中更早地处理它们。解决方案是使用boolenum retVals。重新抛出异常会导致性能下降。

答案 4 :(得分:0)

Exception是处理特殊情况的最佳方式。如果预期某些条件,则使用if等条件语句检查它。

除了这些通用规则之外,您愿意为性能提供多少可维护性?你总是可以在汇编程序中编写代码。