简单逻辑的性能瓶颈?

时间:2014-02-14 05:09:39

标签: java performance logic

我正在用Java编写模拟,今天我的性能明显下降。我曾经能够在没有等待的情况下进入我的时间步,但现在时间步之间有几秒钟的延迟。通过一些实验,我发现了一条特定的行,当注释掉时,会使程序再次顺利执行。它在下面的代码片段中显示:

public HashMap<String, Gene> childGenes(String parent, Axes axis, boolean daughter1){
    HashMap<String, Gene> parentGenes = this.cells.get(parent).getGenes();
    HashMap<String, Gene> childGenes = new HashMap<String, Gene>();
    switch(axis){
    case X:
        for(String s: parentGenes.keySet()){
            Gene g = parentGenes.get(s);
            Compartment comp = g.getLocation().getAP();
            /*commenting out this line increases performance*/ if((comp != Compartment.POSTERIOR && daughter1) || (comp != Compartment.ANTERIOR && !daughter1)){
                childGenes.put(g.getName(), new Gene(g.getName(), g.getState(), g.getLocation()).populateCons());
            }
        }
        break;

    //essentially identical cases for Y and Z here
    }
    return childGenes;
}

hashmap有大约30个成员,所以这个for循环将执行30次,并且这个方法快速连续调用两次,总共大约60次运行。在计算机术语中,这仍然看起来像小豆,并不像if语句包含任何特别重要的计算 - 对吧? - 但是评论说单行增加了疯狂的表现。会发生什么事?

提前致谢。

0 个答案:

没有答案