gpt4 book ai didi

Java性能问题: Need to iterate more than 8 million records with a target-branch check

转载 作者:行者123 更新时间:2023-12-02 06:05:56 24 4
gpt4 key购买 nike

我们有一个处理平面文件并(仅进行几次验证)插入数据库的系统。

这段代码:

//可以有800万行代码

for(String line: lines){
if (!Class.isBranchNoValid(validBranchNoArr, obj.branchNo)){
continue;
}
list.add(line);
}

isBranchNoValid 的定义:

//数组长度只能在2到5之间

public static boolean isBranchNoValid(String[] validBranchNoArr, String branchNo) {
for (int i = 0; i < validBranchNoArr.length; i++) {
if (validBranchNoArr[i].equals(branchNo)) {
return true;
}
}
return false;
}

验证是在行级别进行的(我们必须过滤或跳过数组中没有 branchNo 的行)。早些时候,情况并非如此(过滤器)。

现在,高性能退化正在困扰着我们。我理解(可能是我错了)这种重复的函数调用会导致大量的堆栈创建,从而导致非常高的GC调用。

我想不出一种方法(是否有可能)来执行此过滤器而不会造成性能下降的高昂成本(有一点差异就可以了)。

最佳答案

这肯定不是堆栈问题,因为您的函数不是递归的,调用之间堆栈中不会保存任何内容;每次调用后,变量都会被删除,因为不再需要它们。

您可以将有效数字放入一组并使用该数字进行一些优化,但就您的情况而言,我不确定它会带来任何好处,因为您最多有 5 个元素。

关于Java性能问题: Need to iterate more than 8 million records with a target-branch check,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55939802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com