Java 简单逻辑的性能瓶颈?

Java 简单逻辑的性能瓶颈?,java,performance,logic,Java,Performance,Logic,我正在用Java编写一个模拟,今天我的性能明显下降。我过去可以在不等待的情况下完成我的时间步,但现在时间步之间有几秒钟的延迟。通过一些实验,我发现了一个特殊的行,当注释掉时,会使程序再次顺利执行。下面我的代码片段中指出了这一点: public HashMap<String, Gene> childGenes(String parent, Axes axis, boolean daughter1){ HashMap<String, Gene> parentGenes

我正在用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;
}
public HashMap childGenes(字符串父项、轴、布尔子项1){
HashMap parentGenes=this.cells.get(parent.getGenes();
HashMap childGenes=新HashMap();
开关(轴){
案例十:
for(字符串s:parentGenes.keySet()){
Gene g=parentGenes.get(s);
隔间组件=g.getLocation().getAP();
/*注释掉这一行可以提高性能*/if((comp!=隔室.POSTERIOR&&daughter1)| |(comp!=隔室.preterior&&daughter1)){
childGenes.put(g.getName()、新基因(g.getName()、g.getState()、g.getLocation()).populateCons());
}
}
打破
//这里Y和Z的情况基本相同
}
返回儿童基因;
}
hashmap大约有30个成员,因此这个for循环将执行30次,并且这个方法将快速连续调用两次,总共运行大约60次。从计算机的角度来看,这仍然像是小豆,而且if语句并没有包含任何计算量特别大的内容,对吧但是评论这一行会疯狂地提高性能。会发生什么事


提前谢谢。

你能发布或链接到隔间类吗?另外,如果你注释掉那一行,而没有其他内容,程序将无法编译。你到底注释掉了什么代码?隔间只是一个枚举(有九个可能的值,其中一个是后面的)。我只注释掉了if语句和结束它的括号。一切仍在编译,只是添加到childGenes hashmap的项目比预期的要多。在您的分析中,没有什么问题。因此,有必要知道重复问题的可编译代码段。