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