Java如果vs try-catch开销

时间:2014-07-17 17:16:07

标签: java performance try-catch

我有很多数据包,有些数据包有问题。

例如,对数据包采用以下简单的方法实现:

public String tryTrim(packet)
{
    try
    {
       process(packet);
    }
    catch (Exception e)
    {
        e.printStackTrace();
     }

    return null;
}

某些数据包将出现故障并发生错误,并且不会频繁发生,但是经常发生无法避免的错误。

我有两种方法,

将验证每个数据包并在try块和

中处理它

其他将捕获有故障的数据包并使其成为有效数据包并再次发送到该函数。

哪一个会降低性能开销。

1 个答案:

答案 0 :(得分:1)

  

将验证每个数据包并在try block中处理它

除非验证非常简单,否则这已足以支配try-catch的成本。不要优化无关紧要的事情。所以我们可以(而且应该)停在这里。

  

另一个将捕获有故障的数据包并使其成为有效数据包并再次发送给该函数。

你没有写出“制作有效”的方式以及可能花费的时间。另请注意,结果与第一种情况有很大不同,因为您在修复它后处理损坏的数据包,而不是丢弃它。

最好的建议是Premature optimization is the root of all evil

你通常不应该关心这种低级别的东西(选择合适的算法和结构是一个不同的故事)。好奇很好,但请确保先测量(使用jmhcaliper)。

使用profiler通常比基准测试更合适,但它似乎更棘手。