什么更好:多个“if”语句或一个具有多个条件的“if”语句?

对于我的工作,我必须开发一个小型Java应用程序,该应用程序解析非常大的XML文件(约300k行)以选择非常特定的数据(使用),因此我尝试对其进行一些优化。我想知道这两个片段之间有什么更好:Pattern

if (boolean_condition && matcher.find(string)) {
    ...
}

if (boolean_condition) {
    if (matcher.find(string)) {
        ...
    }
}

其他细节:

  • 这些 if 语句在循环内的每次迭代中执行(约 20k 次迭代)
  • 是使用外部函数在每次迭代时计算的boolean_conditionboolean
  • 如果 设置为 ,我不需要测试正则表达式的匹配项booleanfalse

感谢您的帮助。


答案 1

我遵循的一条黄金法则是尽可能多地“避免嵌套”。但是,如果代价是使我的单身条件过于复杂,我不介意将其嵌套出来。

此外,您正在使用短路运算符。因此,如果布尔值是假的,它甚至不会尝试匹配!&&

所以

if (boolean_condition && matcher.find(string)) {
    ...
}

是要走的路!


答案 2

以下两种方法:

public void oneIf(boolean a, boolean b)
{
    if (a && b)
    {   
    }
}

public void twoIfs(boolean a, boolean b)
{
    if (a)
    {
        if (b)
        {       
        }
    }
}

为方法体生成完全相同的字节代码,因此不会有任何性能差异,这意味着它纯粹是您使用的样式问题(我个人更喜欢第一种样式)。


推荐