顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2015-06-15 21:34:34
看板 Soft_Job
作者 education (打擊出去 外野手退退退退)
標題 [請益] 為何Java速度總是輸Python?
時間 Sun Jun 14 15:53:56 2015


最近在玩Leetcode

每次寫完之後去看執行時間分布圖

發現大多時候Java群聚都是被甩到Python後面

照理說身為靜態語言的Java執行時間應該會比動態語言Python快才對不是嗎?

還是說要在迴圈很大的時候Java才會展現其優勢?

對語言的基礎原理不是很了解  感謝各位解答




PS: 我這邊是假設裡面的樣本夠多

    所以不管用哪種語言的人所給出的演算法平均時間複雜度都應該很接近

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.173.173
※ 文章代碼(AID): #1LVJCML_ (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1434268438.A.57F.html
TheOneisNEO: btw我有一題用C ac時間居然是最慢的xdd1F 06/14 16:10
a26732300: 因為java有個jvm在下面編譯執行,速度上不可能會太快2F 06/14 16:53
LaPass: 是不是要執行的東西很短,而且連jvm起來的時間也算在內啊?3F 06/14 17:37
LaPass: java適合長時間運行的東西,因為新建一個jvm的代價算高,
LaPass: 我看過有jvm寫關於調校的書寫到,如果有個system call太常
LaPass: 呼叫,就用java寫過,用程式直接去叫,以避免頻繁建立jvm
Leetcode上的程式執行時間的確都很短 Java跑的話大多在350ms左右

robler: java的效率低落又不是新聞7F 06/14 19:26
chchwy: 樓上 Java論效率可是遠勝Python8F 06/14 21:00
我會覺得Java應該要勝過Python是因為之前看到一篇文章

那篇文章是Goole在解釋為什麼要建造一個Java的deep learning framework

上面說雖然Python開發快 但是最後真的要拿來大量運算還是要改寫成C
(因為Python不夠快)

而Java的則是速度本身就夠快 寫完之後不需要在改寫成C

單就這段敘述 Java跑起來應該要能夠比Py快才對 不然也沒開發這架構的必要

ntddt: 真有可能jvm起的時間都算進去了...9F 06/14 21:22
carlcarl: Java慢應該是很久以前的事了吧10F 06/14 23:01
cha122977: 慢要看和誰比 和C比誰都慢…11F 06/14 23:03
ken1325: java速度應該是比python快 慢的話或許是你程式寫法有問題12F 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之前,要先運行一段時間13F 06/15 19:50
ICBM: 做profiling。你執行時間短的程式跑在JVM上面,不僅沒有jit
ICBM: 優勢,還要浪費時間去啟動一個很大的JVM以及讓他做profiling
ICBM: 的資源與時間。

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 1020 
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇