看板 Soft_Job 關於我們 聯絡資訊
最近在玩Leetcode 每次寫完之後去看執行時間分布圖 發現大多時候Java群聚都是被甩到Python後面 照理說身為靜態語言的Java執行時間應該會比動態語言Python快才對不是嗎? 還是說要在迴圈很大的時候Java才會展現其優勢? 對語言的基礎原理不是很了解 感謝各位解答 PS: 我這邊是假設裡面的樣本夠多 所以不管用哪種語言的人所給出的演算法平均時間複雜度都應該很接近 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.173.173 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1434268438.A.57F.html
TheOneisNEO: btw我有一題用C ac時間居然是最慢的xdd 06/14 16:10
a26732300: 因為java有個jvm在下面編譯執行,速度上不可能會太快 06/14 16:53
LaPass: 是不是要執行的東西很短,而且連jvm起來的時間也算在內啊? 06/14 17:37
LaPass: java適合長時間運行的東西,因為新建一個jvm的代價算高, 06/14 17:38
LaPass: 我看過有jvm寫關於調校的書寫到,如果有個system call太常 06/14 17:38
LaPass: 呼叫,就用java寫過,用程式直接去叫,以避免頻繁建立jvm 06/14 17:40
Leetcode上的程式執行時間的確都很短 Java跑的話大多在350ms左右
robler: java的效率低落又不是新聞 06/14 19:26
chchwy: 樓上 Java論效率可是遠勝Python 06/14 21:00
我會覺得Java應該要勝過Python是因為之前看到一篇文章 那篇文章是Goole在解釋為什麼要建造一個Java的deep learning framework 上面說雖然Python開發快 但是最後真的要拿來大量運算還是要改寫成C (因為Python不夠快) 而Java的則是速度本身就夠快 寫完之後不需要在改寫成C 單就這段敘述 Java跑起來應該要能夠比Py快才對 不然也沒開發這架構的必要
ntddt: 真有可能jvm起的時間都算進去了... 06/14 21:22
carlcarl: Java慢應該是很久以前的事了吧 06/14 23:01
cha122977: 慢要看和誰比 和C比誰都慢… 06/14 23:03
ken1325: java速度應該是比python快 慢的話或許是你程式寫法有問題 06/15 01:42
我這邊不是說我個人的速度 是指上面全部的Java使用者的平均 VS Python使用著的平均 這幾天寫了快二十題 只看到一題是Java平均贏過Python平均 正常情況下這兩種使用者給出的平均時間複雜度應該相近 所以我才覺得這應該不會是演算法的問題 而且仔細懷想一下 這之間差距好像都蠻固定 或許真的是jvm所造成的時間差也不一定 ※ 編輯: education (59.127.173.173), 06/15/2015 07:22:47
ICBM: Java的jvm快在可以做jit,而要做jit之前,要先運行一段時間 06/15 19:50
ICBM: 做profiling。你執行時間短的程式跑在JVM上面,不僅沒有jit 06/15 19:51
ICBM: 優勢,還要浪費時間去啟動一個很大的JVM以及讓他做profiling 06/15 19:51
ICBM: 的資源與時間。 06/15 19:51
lachtchlee: Java是十足的動態語言 不是原波講的靜態語言 ! 06/15 22:31
s25g5d4: 哪個平行世界的 Java? 06/15 22:57
alog: python沒寫好memory leak包你上線GG 06/15 23:36
garychangb: java是做動態繫節跟運行jvm花時間吧 06/16 05:09
lachtchlee: 運行期間的安全保障機: classloader,verifier of the 06/16 12:44
lachtchlee: bytecode etc. 的門神機制需要花點時間 機->機制 06/16 12:47
lachtchlee: 回s25g5d4 Java是動態語言 但其數據類型是靜態的 ok 06/26 23:03