[英]execute an external command in java
有沒有一種方法可以在Java中執行不因使用ProcessBuilder而引起的啟動開銷(緩慢)的命令?
詳細信息:我使用的是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();
Runtime.getRuntime().exec(...)
可用於運行外部命令。 您可以將List轉換為命令數組或字符串以傳遞給exec()。
不建議這樣做,但是您可以編寫JNI庫來執行與ProcessBuilder相同的操作。 也許您的速度會更快,但我不會指望它,而且您會失去跨平台兼容性。
我們在這里說話有多慢? 我自己使用ProcessBuilder
來運行Git命令(還沒有機會研究JGit),這似乎足夠快。 在Linux上,您可能會碰運氣,因為開銷實際上可能是Windows重量級進程的創建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.