В моем проекте мне нужно создать агент для пользователей, а агент включает несколько банок (около 22 М), некоторый исходный класс (около 200k) и XML. Сервер будет генерировать разные xml для дефференциального пользователя, поэтому мне нужно генерировать агент динамически. Я использовал Runtime.getRuntime().exec("tar...")
для tar-файлов для создания агентов.
Когда я запускаю модульный тест, генерация стоит много времени, около 2 минут для каждого агента. Я не могу позволить пользователю подождать страницу в течение 2 минут ... так ли это вообще существует, чтобы сделать эту программу более эффективной, или есть другой способ быстро и плавно генерировать агент? оценить!использует Java для запуска команды «tar», но для генерации tar-файла стоит много времени.
/**
* tar the agents
* @param inputFiles agent files
* @param outputFile agent tar
* @param baseDir the directory path to run "tar" command
*/
public static void tarFile(String[] inputFiles,String outputFile,String baseDir){
String cmd="tar -zcf "+outputFile+" ";
for (int i = 0; i < inputFiles.length; i++) {
cmd+=inputFiles[i]+" ";
}
System.out.println(cmd);
try {
Process process=Runtime.getRuntime().exec(cmd, null, new File(baseDir));
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(process.getInputStream()));
String s;
while ((s=bufferedReader.readLine())!=null) {
System.out.println(s);
}
process.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
это мой класс дегтя, то пары - имя_базовой_папки это задать пути исполнения команды
Сжимаете ли вы его? – Brandon
Вы пытались нарезать резьбу, чтобы извлекать файлы одновременно? – elyashiv
2 минуты для чуть более 22 м очень медленно. Чтобы сделать ваше программное обеспечение более эффективным, вы должны сначала выяснить, почему он так долго. Вероятно, у вас есть ошибка в вашей программе, но без дополнительной информации невозможно сказать больше. – Raedwald