Есть ли способ выполнить команду в java, которая не страдает из-за служебных данных запуска (медленности) использования ProcessBuilder?выполнить внешнюю команду в java
Подробнее: Я использую im4java, которая представляет собой библиотеку java, которая внутренне использует ProcessBuilder для выполнения программ imagemagick. Это медленно. Я создал небольшой единичный тест, который показывает, что проблема ProcessBuilder (а не im4java). Медленность - это накладные расходы на запуск с помощью ProcessBuilder. Я нашел сообщения по всему интернету о том, что у processbuider есть накладные расходы, поэтому не только я говорю, что это так.
List<String> commands = new ArrayList<String>();
commands.add("C:\\PROGRA~2\\ImageMagick-6.6.4-Q16\\convert.exe");
commands.add("dog.jpg");
commands.add("output.jpg");
ProcessBuilder processBuilder = new ProcessBuilder(commands);
Process start = processBuilder.start();
start.waitFor();
Является ли производительность _really_ проблемой или просто «раздражает» во время тестирования? Использование ProcessBuilder рекомендуется, используя Runtime.exec() по нескольким причинам (http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html). –
Да, это проблема. Я был не прав, хотя на сколько времени ProcessBuilder снижает производительность. Это не добавляет слишком много. Кажется, что в некоторых местах замедление замедляется, поэтому оно складывается. –