Edu*_*rdo 7 .net c# performance exception division
这非常慢:
try
{
x = k / y;
}
catch (DivideByZeroException) { }
Run Code Online (Sandbox Code Playgroud)
这大约快5倍:
if (y > 0) x = k / y;
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么?
Jon*_*eet 11
只快5倍?你让我感到惊讶.据推测,这意味着您的样本数据中没有很多零.
例外比简单的比较更昂贵.如果使用得当(例如在特殊情况下),它们不会显着妨碍性能 - 因为如果你投入足够的例外来产生重大影响,那么你的服务很可能已经被软化了.当您使用异常来尝试忽略您可以非常容易地测试的条件时,它确实会导致问题 - 就像这一样.
有关异常成本的一点需要注意:它们在调试器中的成本比没有附加调试器的情况下要多得多; 特别是需要加载一堆资源的第一个例外可能需要几秒而不是微/毫秒.如果您要对代码进行基准测试,那么在调试器中不这样做是至关重要的 - 这通常是正确的,但特别是对于异常.
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |