Позже я использовал инструмент мониторинга производительности процесса и одновременно запускал оба приложения (в CMD и в IDE). Я заметил, что оба процесса идентичны во всем, кроме мощности процессора. Процесс, запущенный в IDE, занимает около 19–23% загрузки ЦП, а в CMD — около 6–11% загрузки ЦП. Это может объяснить, почему запуск в IDE занимает меньше времени.
Чтобы сделать приложение понятным, ниже приведен фрагмент кода, который занимает большую часть времени
Код: Выделить всё
for (Call call: calls {
CallXCD callXCD = call.getCallXCD();
if(callXCD.isOnNet()){
System.out.println("OnNet");
}
else if (callXCD.isXNet()){
System.out.println("XNet");
}
else if (callXCD.isOthers()){
System.out.println("Others");
}
else if (callXCD.isIntra()){
System.out.println("Intra");
}
else {
System.out.println("Not Known");
}
}
Я профилировал этот фрагмент кода, печатая время каждый раз. итерационный дубль. В IDE каждая итерация занимала около 0,007 миллисекунды, а в командной строке, запускающей файл jar, — около 0,2 миллисекунды. Поскольку мой код требует около 4 миллионов итераций, негативное влияние на производительность очень существенное.
Почему это происходит? Есть ли способ выделить JVM больше вычислительной мощности, например, аргументы памяти?
[img]https:// i.sstatic.net/riyWG.jpg[/img]
Подробнее здесь: https://stackoverflow.com/questions/189 ... mmand-line