2010-07-29 21 views
9

什麼是JVM上性能最高的(最快)lisp實現? 通過Lisp實現我考慮口齒不清家庭的任何語言,如Common Lisp的,計劃,Clojure中,所有的實現......什麼是JVM上性能最高的lisp

我知道的Clojure可以非常快使用類型提示進行,即ABCL是一般不考慮要快。我沒有在JVM上使用任何Scheme的經驗,但聽說Kawa也非常快。

回答

10

使用Clojure,你可以達到Java的速度(當然還有類型提示),並且你不能比java更快(在一些非常罕見的情況下可以免除)。我不知道其他人說可能是相同的速度,但不是更快。

這樣說關於通話的標準速度等等。

Clojure擁有的數據結構並不總是儘可能快,但真正彌補了其他屬性,如線程安全,不可變和快速閱讀。

爲了使數據結構更加快速Rich發明了一種暫時性的方式,使它們可以以一種仍然有效的方式變化(而且速度更快),並且他已經在研究下一件大事情(閱讀Emerging Languages陣營談論富有)。

它更容易與clojure編寫併發代碼,以便真正導入以製作快速程序。

所以接下來的事情就是數學。 JVM上有三個速度級別。數學與盒裝類型,原始類型溢出檢查,或沒有溢出檢查。 Clojure提供所有那些在那裏沒有限制。

因此,接下來的事情是,如果你必須使用你不會執行的包裝,並且在大多數JVM語言中經常使用java調用,那麼你可以使用Java多快。爲了在clojure中實現clojure,clojure需要添加一個低級構造,以便您可以在沒有任何開銷的情況下與java進行交互。

所以clojure和JVM一樣快。

P.S.

協議就像真正快速的multmethods巫術不是通用的,但調度速度足以在clojure核心中使用它們(所以不再依賴於java)。看看他們的方式很酷。

9

雖然this和其他一些似乎表明顯而易見的好數據不是很多。執行非不可變任務時,不可變語言會受到輕微影響,並且在執行高度並行任務時會受到非不可變語言的影響。

在考慮這些問題時,有助於考慮「故障恢復選項」。 Clojure可以回退到Java,用於你的代碼的任何部分,而這個分析器告訴你它並沒有放棄它的懷抱。

總之:我投的Clojure :)

3

我會感到驚訝,如果它不是Clojure的。我知道沒有其他的JVM lisp對性能有過多關注。最快的Scheme可能是SISC - 它被編譯爲FASL格式,但仍然不是「本機」JVM指令級別。

+1

SISC表示解釋器的「Second * Interpreter *」,對於解釋器來說它的性能被認爲是相當不錯的,但它肯定比kawa慢,它直接編譯爲字節碼並且還支持類型提示。然而,clojure和kawa表現之間的比較可能會很有趣。 – 2010-07-30 20:46:02

相關問題