我在這里與大家分享一些從世界單打系統(tǒng)中獲得的經驗……
我們早在2009年11月就開始使用Scala語言,我們有一個操作需要運行很長時間,從會員信息數(shù)據庫中獲取大量的數(shù)據變化信息,并以如下形式發(fā)送給自定義搜索引擎一個XML 包文件。將數(shù)據庫中的大量數(shù)據表映射到XML規(guī)則文件是一個比較復雜的操作。過去,公司嘗試過各種方法,有些有效,有些無效。我向公司推薦Scala語言,因為它高效、并行、類型安全、方便(特別是XML在Scala語言中有對應的基本數(shù)據類型)。
將近兩年來,我們一直在使用Scala 編程作為產品發(fā)布的后端。大多數(shù)時候,它運行得很好,但是當壓力很大時,它就會溢出內存。經過大量的觀察和測試,我們慢慢確認(至少部分原因)是Scala語言本身的實現(xiàn)。這個問題。 Scala 正準備合并Akka 庫,我們一直在考慮將程序遷移到Akka.
自從我們今年開始使用Clojure 語言(我們大約在去年5 月份開始嘗試),我們認為我們應該集中精力開發(fā)一個Clojure 版本的Scala 程序,看看它運行得如何。
Clojure版本的后臺發(fā)布程序,我們花了大約15個小時開發(fā),并通過了所有測試。今天我們進行了一次“疲勞測試”,讓它一次處理近30萬會員的信息。如果是Scala程序,當一次處理的數(shù)據量達到50000份(有時更少)時,就會報內存溢出錯誤。但是Clojure程序是一口氣完成的,非常順利—— 所以,我們決定在下一個產品發(fā)布中用它來替代Scala程序。
另一個有趣的方面是該程序的Scala 版本大約有1,000 行長(大約31,000 個字符)。 Clojure 版本只有260 行(大約11,500 個字符)。甚至注釋也更容易(*呃* - 不是我想吹牛,只是說比較是公正的)。我們的比較沒有考慮單元測試代碼,因為Clojure 版本是倉促寫的。 Clojure的代碼形式和Scala代碼很接近,很多功能都是一樣的。 ——Clojure 是更強大的Scala——。它重構了一些輔助功能,使其更加模塊化和可維護性。 (北京網出品)
結果,很明顯我會在生產中使用Clojure 版本的發(fā)行版,完全放棄Scala。
感謝Rich Hickey(Clojure 語言的發(fā)明者)和Clojure/核心開發(fā)團隊創(chuàng)造了如此適用的編程語言,幫助人們解決大問題—— 謝謝!
標簽: 北京網站制作高端網站建設
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復、物聯(lián)網開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!