为什么使用try catch对应用程序性能有害?
我不是说使用try catch 100次。实际上,当我使用它数千次时
它真的会导致性能问题吗?
谢谢
答案 0 :(得分:4)
try / catch(作为匿名函数)将创建一个Activation对象,该对象将使用更多内存,并且不会使用寄存器作为本地变量。 所以使用它会消耗内存并使用它来减慢整个功能。
你可以查看avm2 performance PDF,例如它没有谈到try / catch,但你可以看一下描述匿名函数的方法闭包章节,并对try / catch使用相同的机制。
答案 1 :(得分:3)
说到使用异常作为一般做法,请记住异常是“例外”。只要你将它们用于它们的意图 - 处理不应该发生的事件,它应该没问题。
因此,不要尝试使用Exceptions进行分支,实现子例程或传递信息,并且不应该对性能产生影响。即使它很重,也意味着要长时间调用一次。或者最好,从来没有。
答案 2 :(得分:1)
是的,当捕获错误时,try和catch语句非常慢(与其他操作相比)。显然它有其目的但绝不依赖于try和catch语句进行逻辑控制。它用于保护可能发生错误的代码(如文件IO)。