gpt4 book ai didi

Java:如何提高代码的性能?

转载 作者:行者123 更新时间:2023-12-01 10:55:07 25 4
gpt4 key购买 nike

我有一个程序可以从给定目录读取 .txt 文件。每条记录行都包含一个数据,我正在解析它。我认为这对于性能而言代价高昂,但我可能是错的。这是方法。我该如何改进它以提高性能?

    currentLine = uploadFileReader.readLine();

while (!isBlankOrNull(currentLine)) {
line++;
String[] record = parseRecord(currentLine);
// process the record array here..
}

private String[] parseRecord(String currentLine){

String[] recordLine = currentLine.split("\\|");
String[] record = null;
String[] zeroArray = null;

if(recordLine.length == 4){
zeroArray = new String[] {"0","0","0","0","0","0"};
record = (String[]) ArrayUtils.addAll(recordLine, zeroArray);
}else if(recordLine.length == 5){
zeroArray = new String[] {"0","0","0","0","0"};
record = (String[]) ArrayUtils.addAll(recordLine, zeroArray);
}else if(recordLine.length == 6){
zeroArray = new String[] {"0","0","0","0"};
record = (String[]) ArrayUtils.addAll(recordLine, zeroArray);
}else if(recordLine.length == 7){
zeroArray = new String[] {"0","0","0"};
record = (String[]) ArrayUtils.addAll(recordLine, zeroArray);
}else if(recordLine.length == 8){
zeroArray = new String[] {"0","0"};
record = (String[]) ArrayUtils.addAll(recordLine, zeroArray);
}else if(recordLine.length == 9){
zeroArray = new String[] {"0"};
record = (String[]) ArrayUtils.addAll(recordLine, zeroArray);
}else{
record = recordLine;
}

return record;
}

示例文件内容:

    0000710000|07-23-2015|08-24-2015|257072140993|1|0.2|0.3|||

每个空/空白管道都有“0”默认值

最佳答案

对于花费 6 分钟读取 2000 行文件,我能想到的唯一解释是:

  • 您正在使用无缓冲读取器。

  • 各个行都很长。

  • 以上两者。

无论哪种情况,识别性能瓶颈的一个好方法是使用分析器。

<小时/>

如果(假设)问题是由上述原因之一引起的,您可以通过(分别)提高读取时间:

  1. BufferedReader 包装 Reader

  2. 使用扫描仪直接从阅读器读取内容,而不是读取整行并拆分,并且

  3. 避免将整个文件内容保存在内存中。

我倾向于认为 2. 不会​​产生很大的差异,并且 3. 也不会产生很大的差异,除非文件非常大。

关于Java:如何提高代码的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33645800/

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