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