自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Clojure語言叫板Scala語言 我們不怕內(nèi)存溢出

開發(fā) 開發(fā)工具
Scala還沒有完全主流,已經(jīng)有新的語言向他叫板了。Clojure語言宣稱他們更能承受巨大的壓力,不怕內(nèi)存溢出。事情果真如此?

  我在這里是想跟大家分享一些從World Singles 系統(tǒng)里獲得的經(jīng)驗 …

  早在2009年11月,我們就開始使用Scala語言了。我們有一個需要運行很長時間的操作,把大量的數(shù)據(jù)變更信息從會員信息數(shù)據(jù)庫中取出,以XML打包文件的形式發(fā)送到自定義搜索引擎里。把一大堆的數(shù)據(jù)表從數(shù)據(jù)庫中映射到XML規(guī)則文件里是一個相當(dāng)復(fù)雜的操作。在過去,公司嘗試了各種方法,有的好用,有的不好用。我向公司推薦使用Scala語言,原因是他的高效、并行性、類型安全,以及方便適用(特別是XML在Scala語言里有一種相對應(yīng)的基本數(shù)據(jù)類型)。

  我們使用Scala編程作為產(chǎn)品的后臺發(fā)布程序已經(jīng)有差不多兩年了。大多時候,它運行的非常好,但在壓力大的時候,它會出現(xiàn)內(nèi)存溢出的現(xiàn)象,經(jīng)過大量的觀察和測試,我們慢慢的確認(rèn),(至少部分原因)是Scala語言本身的實現(xiàn)導(dǎo)致了這個問題。Scala正準(zhǔn)備要收編Akka程序庫,我們一直在考慮把程序遷移到Akka上…

  因為今年我們開始使用Clojure語言(大概是去年5月我們就開始嘗試這種語言),我們認(rèn)為應(yīng)該集中兵力開發(fā)出一個Clojure版本的Scala程序,看看它運行起來表現(xiàn)如何。

  這個Clojure版的后臺發(fā)布程序的開發(fā)耗費了我們大概15個小時,并通過了所有測試。今天我們進(jìn)行了一次“疲勞測試”,讓它一次處理將近30萬個會員的信息。如果是Scala程序,當(dāng)一次處理的數(shù)據(jù)量達(dá)到5萬份時(有時會更少),它就會報內(nèi)存溢出錯誤。而Clojure程序卻一氣呵成,十分順利——于是,我們就決定在下一次產(chǎn)品發(fā)布里用它把Scala程序給替換下來了。

  另外一個有趣的方面是,Scala版的程序長度總共大約有1000行(大概有3.1萬個字符)。而Clojure版的只有260行(大約1.15萬個字符)。就連注釋也簡單了(*呃哼*—這并不是我想炫耀的,只是想說這種比較沒有偏向)。我們的比較還沒有把單元測試代碼計算入內(nèi),因為Clojure版寫的很倉促。Clojure的代碼形式非常的接近Scala代碼,很多函數(shù)都相同——Clojure是一種更強(qiáng)大的Scala——它對一些輔助函數(shù)進(jìn)行的重構(gòu),使其變的更加模塊化和可維護(hù)。

  結(jié)果是很顯然,我將在產(chǎn)品里采用Clojure版的發(fā)布程序,完全的放棄Scala。

  這是Rich Hickey(Clojure語言的發(fā)明人) 和 Clojure/core 開發(fā)團(tuán)隊的功勞,他們創(chuàng)造了這樣一種精彩適用的編程語言,幫人們解決了大問題——謝謝你們!

【編輯推薦】

  1. Scala語言編程入門指南
  2. Scala編程指南 更少的字更多的事
  3. Scala編程指南 揭示Scala的本質(zhì)
  4. Scala編程指南 了解Traits功能
  5. 51CTO專訪Scala創(chuàng)始人:Scala拒絕學(xué)術(shù)化
責(zé)任編輯:彭凡 來源: 外刊IT評論
相關(guān)推薦

2009-08-26 10:39:01

Scala和Cloju

2009-07-08 12:43:59

Scala ServlScala語言

2014-05-23 10:25:48

Clojure

2012-04-23 14:35:29

JVMJavaClojure

2020-10-31 17:33:18

Scala語言函數(shù)

2010-09-14 13:22:17

Scala編程指南Scala

2013-03-04 09:30:38

ClojureJVM

2014-03-26 14:19:00

ClojureJVM

2009-08-27 17:12:04

Clojure編程語言Java

2009-12-11 10:44:00

Scala講座函數(shù) scala

2010-08-18 08:53:53

Scala

2009-07-08 14:51:10

2009-07-08 16:42:57

Scala語言設(shè)計

2010-04-13 15:05:03

安騰

2009-02-06 09:08:04

Scala函數(shù)語言輕量級

2014-01-07 10:12:15

Spark

2012-06-08 09:28:15

EclipseScalaAndroid

2018-05-07 09:09:13

編程語言 C 語言Java

2016-09-27 21:25:08

Go語言Ken Thompso

2010-11-03 09:22:00

C語言
點贊
收藏

51CTO技術(shù)棧公眾號