gpt4 book ai didi

java - 关于java中计算耗时的问题

转载 作者:行者123 更新时间:2023-12-01 10:47:51 24 4
gpt4 key购买 nike

我正在尝试编写一段代码,用于从文件夹中读取 120 个文件并对其执行一些计算。当我调试代码时,它工作正常,但是执行时间超过 20 分钟,我知道这可能是由于代码中的错误造成的。但是,有人可以研究它并提出可能的方法来减少执行时间。如果我需要提供更多信息,请告诉我。谢谢。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

public class myclass {
static int total = 1;
static int r = 0;

public static void main(String[] args) {

ArrayList<Double> mysignal = new ArrayList<Double>();
ArrayList<Double> mylist = new ArrayList<Double>();

double x;
double a;
myclass obj = new myclass();
String target_dir = "path for folder";
File dir = new File(target_dir);
File[] files = dir.listFiles();

for (File f : files) {
if (f.isFile()) {
BufferedReader inputStream = null;

try {
inputStream = new BufferedReader(new FileReader(f));
String line;

while ((line = inputStream.readLine()) != null) {
System.out.println(line);
mysignal.add(Double.valueOf(line));
total++;

}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

a = obj.funtioneg(mysignal, total);
mylist.add(r, a);
System.out.println(mylist.get(r));
r++;

}
}
}

public double functioneg(ArrayList<Double> s, int N) {

ArrayList<Double> y = new ArrayList<Double>();
double sum = 0, a1 = 0;
double[] o1 = new double[N - 1];// processed signal

for (int n = 0; n < counter_main - 1; n++) {
for (int k = 0; k < 40; k++) {

if (n - k >= 0) {
a1 = s.get(n - k);
sum = sum + (a1 * a1);// energy

} else
sum = sum + 0;
}

o1[n] = sum;

sum = 0;

}
double sum1 = 0;
double avg;
for (int t = 0; t < counter_main - 1; t++) {

sum1 = sum1 + o1[t];
}

avg = sum1 / N - 1;

return (avg);
}
}

最佳答案

您需要关闭您的InputStream

读取目录中的每个文件后(在 try - catch block 之后)写入语句:

inputStream.close();

关于java - 关于java中计算耗时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34074827/

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