![]() |
1
15
在这里的示例中,真正的性能影响是doSomething()和doAnotherThing()都抛出异常。进入try块很快,直到它抛出异常。 这真的取决于你的处境。如果您需要在MyCheckedException以任何方式抛出时执行相同的操作,我会认为将它们放在同一个try块中更具可读性和性能,但是如果您需要以不同的方式处理这两种不同的情况,那么将它们分开当然更有意义。 编辑:我看了你评论的结尾,你假设处理这两个问题的方式相同,在这种情况下,我会把它们放在同一个try块中。 |
![]() |
2
23
不,你怎么能想到
不。 正如您所观察到的,异常只会在抛出时产生性能成本。 如果您关心的是“try”性能,那么肯定要做的是将代码保存在 最大值? |
![]() |
3
4
我不知道哪一个慢,但别忘了
分离
编写干净、可读的代码,以及 然后 寻找瓶颈。如果现有的实验不能得出基本的指导原则,那么我怀疑这不是你能找到瓶颈的地方。 |
![]() |
4
3
在任何像样的JVM中,拥有try块基本上都不会产生性能影响。真正的成功发生在实际抛出异常时。 你可以阅读 this article 为了了解JVM如何在字节码中实现异常处理:它创建“异常表”,将代码区域映射到catch/finally块,因此:
当然,当抛出一个异常时,会有很多堆栈工作要做,所以会有代价。无论如何,它并没有SEH(NET异常)那么糟糕。 |
![]() |
5
2
您的代码应该只处理它可以处理的异常,其他的应该被重新抛出。 try块中的代码量不会导致速度减慢,命中catch块会导致速度减慢。但是,除非您尝试编写真正的高性能代码,否则我不会担心它。 |
![]() |
6
1
将try/catch块的数量保持在最小值将稍微提高性能,但是移动工作实际上不会有什么区别,除了由于抛出异常而被跳过的工作。 |
![]() |
7
0
异常开销很大,因为每次抛出异常时,都必须创建和填充堆栈跟踪。 设想一个余额转移操作,在1%的情况下由于资金不足而失败。 即使故障率相对较低,性能也可能受到严重影响。 查看源代码和基准测试结果 here . |
![]() |
8
0
我不确定里面
|
![]() |
9
-1
每个异常块都有开销。所以,你想要最大化你在一个街区中停留的时间。
但是,您还必须考虑语义上的差异。在第一个例子中,如果
|
![]() |
S. Jacson · 任意两台发电机的速度差(内置功能) 2 年前 |
![]() |
Sadeq Dousti · 相当于“嵌套删除”的执行性能SQL查询 2 年前 |
![]() |
Prince · 复制大型文件需要更多时间 2 年前 |
![]() |
Sagar · 为什么在循环之外声明变量会更快? 2 年前 |
![]() |
seco · 如何在不挂起页面的情况下加载JS 2 年前 |