Existe-t-il un moyen d'exécuter une commande dans java qui ne souffre pas du temps de démarrage (lenteur) de l'utilisation de ProcessBuilder?exécuter une commande externe dans java
Plus de détails: J'utilise im4java qui est une bibliothèque Java qui utilise en interne ProcessBuilder pour exécuter les programmes de imagemagick. C'est lent. J'ai créé un petit test unitaire qui montre que ProcessBuilder (pas im4java) est le problème. La lenteur est la surcharge de démarrage de l'utilisation de ProcessBuilder. J'ai trouvé des messages sur Internet disant que le processus de traitement avait des frais généraux, donc ce n'est pas seulement moi qui le dis.
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();
Les performances sont-elles vraiment un problème ou simplement «ennuyeuses» lors des tests? L'utilisation de ProcessBuilder est encouragée plutôt que l'utilisation de Runtime.exec() pour plusieurs bonnes raisons (http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html). –
Oui, les performances sont un problème. Je me suis trompé cependant sur combien de temps ProcessBuilder dégrade la performance. Cela n'ajoute pas grand chose. Il semble juste qu'il y ait des ralentissements dans quelques endroits, donc c'est additionnel. –