作者masan22305 (海豹)
看板java
標題[JSP ] Jsp呼叫Java程式(內含shell) 效率問題
時間Thu Nov 13 14:42:18 2014
各位前輩好
小弟最近碰到一個弔詭的事情,想了好幾天都解決不了
問題敘述:
我用Jsp去呼叫Java的一個method起來跑, 這個java是對參數做處理之後
在呼叫sh檔起來跑(win7系統, 安裝Cygwin)
為了測試問題所在, 其中一個版本是呼叫sh檔, 另外一個版本是呼叫bat
但是效率上就出現極大的差異
--------------------------------------------------------------
Jsp -> Java -> bat 1秒
-> sh 50秒!
Java -> bat 1秒
-> sh 1秒
--------------------------------------------------------------
部分程式碼:
1. bat&sh檔內容都是很簡單的指令, 應不是指令過於複雜所造成的效率問題
echo "1234" > 1
2. Jsp端呼叫Java程式
<%
Test t = new Test();
String result = t.method(參數1, 參數2, ...);
%>
<%= result %>
3. Java程式呼叫sh檔
Process p = Runtime.getRuntime().exec( shpath ); //shpath是shell檔路徑
p.waitFor();
--------------------------------------------------------------
簡單看過整體流程, 程式就是碰到要執行sh檔的時候會卡住一段時間約40秒
接著sh檔執行起來就會很快。
麻煩各位前輩幫忙提津QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.121.197.112
※ 文章網址: http://www.ptt.cc/bbs/java/M.1415860942.A.170.html
※ 編輯: masan22305 (140.121.197.112), 11/13/2014 14:42:41
※ 編輯: masan22305 (140.121.197.112), 11/13/2014 15:54:55
推 pttnews: 為什麼bat 要呼叫 sh? 11/13 16:40
→ pttnews: bat 及 sh 內容? 有無傳參數進入或是取得回傳值? 11/13 16:43
※ 編輯: masan22305 (140.121.197.112), 11/13/2014 16:58:32
→ masan22305: 抱歉, 說明不夠詳細, 一個版本是呼叫bat另一版呼叫sh 11/13 16:58
→ masan22305: 但是執行的速度卻差很多, 內容都是很簡單的指令 11/13 16:59
→ masan22305: bat跟sh的內容都是 echo "1234" > 1 而已 11/13 17:00
→ masan22305: 並無傳入參數與取得回傳值 11/13 17:00
※ 編輯: masan22305 (140.121.197.112), 11/13/2014 17:01:07
※ 編輯: masan22305 (140.121.197.112), 11/13/2014 17:01:34
推 luoqr: echo 執行時間印一下呀~XD 11/13 17:58
推 pttnews: 我記得呼叫sh 要指定shell 我猜會不會是這個原因 11/13 21:25
※ 編輯: masan22305 (203.121.239.109), 11/14/2014 13:16:21
→ bitlife: 不負責任猜測,時間長的那個,執行一開始有隱含的dns查詢, 11/14 15:07
→ bitlife: timeout之後才開始執行原po的sh內echo指令 11/14 15:08