網站建設

PC + 手機 + 微信網站 + 小程序 + APP,五端合一(yī / yì /yí)

當前位置:首頁>新聞資訊>網站建設

[北京網站制作]Clojure語言叫闆Scala語言 我們不(bù)怕内存溢出(chū)

時(shí)間:2025-04-01   訪問量:1074

我在(zài)這(zhè)裏是(shì)想跟大(dà)家分享一(yī / yì /yí)些從World Singles 系統裏獲得的(de)經驗 …

早在(zài)2009年11月,我們就(jiù)開始使用Scala語言了(le/liǎo)。我們有一(yī / yì /yí)個(gè)需要(yào / yāo)運行很長時(shí)間的(de)操作,把大(dà)量的(de)數據變更信息從會員信息數據庫中取出(chū),以(yǐ)XML打包文件的(de)形式發送到(dào)自定義搜索引擎裏。把一(yī / yì /yí)大(dà)堆的(de)數據表從數據庫中映射到(dào)XML規則文件裏是(shì)一(yī / yì /yí)個(gè)相當複雜的(de)操作。在(zài)過去,公司嘗試了(le/liǎo)各種方法,有的(de)好用,有的(de)不(bù)好用。我向公司推薦使用Scala語言,原因是(shì)他(tā)的(de)高效、并行性、類型安全,以(yǐ)及方便适用(特别是(shì)XML在(zài)Scala語言裏有一(yī / yì /yí)種相對應的(de)基本數據類型)。

我們使用Scala編程作爲(wéi / wèi)産品的(de)後台發布程序已經有差不(bù)多兩年了(le/liǎo)。大(dà)多時(shí)候,它運行的(de)非常好,但在(zài)壓力大(dà)的(de)時(shí)候,它會出(chū)現内存溢出(chū)的(de)現象,經過大(dà)量的(de)觀察和(hé / huò)測試,我們慢慢的(de)确認,(至少部分原因)是(shì)Scala語言本身的(de)實現導緻了(le/liǎo)這(zhè)個(gè)問題。Scala正準備要(yào / yāo)收編Akka程序庫,我們一(yī / yì /yí)直在(zài)考慮把程序遷移到(dào)Akka上(shàng)…

因爲(wéi / wèi)今年我們開始使用Clojure語言(大(dà)概是(shì)去年5月我們就(jiù)開始嘗試這(zhè)種語言),我們認爲(wéi / wèi)應該集中兵力開發出(chū)一(yī / yì /yí)個(gè)Clojure版本的(de)Scala程序,看看它運行起來(lái)表現如何。

這(zhè)個(gè)Clojure版的(de)後台發布程序的(de)開發耗費了(le/liǎo)我們大(dà)概15個(gè)小時(shí),并通過了(le/liǎo)所有測試。今天我們進行了(le/liǎo)一(yī / yì /yí)次“疲勞測試”,讓它一(yī / yì /yí)次處理将近30萬個(gè)會員的(de)信息。如果是(shì)Scala程序,當一(yī / yì /yí)次處理的(de)數據量達到(dào)5萬份時(shí)(有時(shí)會更少),它就(jiù)會報内存溢出(chū)錯誤。而(ér)Clojure程序卻一(yī / yì /yí)氣呵成,十分順利——于(yú)是(shì),我們就(jiù)決定在(zài)下一(yī / yì /yí)次産品發布裏用它把Scala程序給替換下來(lái)了(le/liǎo)。

另外一(yī / yì /yí)個(gè)有趣的(de)方面是(shì),Scala版的(de)程序長度總共大(dà)約有1000行(大(dà)概有3.1萬個(gè)字符)。而(ér)Clojure版的(de)隻有260行(大(dà)約1.15萬個(gè)字符)。就(jiù)連注釋也(yě)簡單了(le/liǎo)(*呃哼*—這(zhè)并不(bù)是(shì)我想炫耀的(de),隻是(shì)想說(shuō)這(zhè)種比較沒有偏向)。我們的(de)比較還沒有把單元測試代碼計算入内,因爲(wéi / wèi)Clojure版寫的(de)很倉促。Clojure的(de)代碼形式非常的(de)接近Scala代碼,很多函數都相同——Clojure是(shì)一(yī / yì /yí)種更強大(dà)的(de)Scala——它對一(yī / yì /yí)些輔助函數進行的(de)重構,使其變的(de)更加模塊化和(hé / huò)可維護。(北京網站制作)

結果是(shì)很顯然,我将在(zài)産品裏采用Clojure版的(de)發布程序,完全的(de)放棄Scala。

這(zhè)是(shì)Rich Hickey(Clojure語言的(de)發明人(rén)) 和(hé / huò) Clojure/core 開發團隊的(de)功勞,他(tā)們創造了(le/liǎo)這(zhè)樣一(yī / yì /yí)種精彩适用的(de)編程語言,幫人(rén)們解決了(le/liǎo)大(dà)問題——謝謝你們!

标簽:北京網站制作 高端網站建設

上(shàng)一(yī / yì /yí)篇:空間的(de)租賃

下一(yī / yì /yí)篇:北京網站建設電子(zǐ)商務網站都要(yào / yāo)有哪些功能?

發表評論:

評論記錄:

未查詢到(dào)任何數據!

在(zài)線咨詢

點擊這(zhè)裏給我發消息 售前咨詢專員

點擊這(zhè)裏給我發消息 售後服務專員

在(zài)線咨詢

免費通話

24小時(shí)免費咨詢

請輸入您的(de)聯系電話,座機請加區号

免費通話

微信掃一(yī / yì /yí)掃

微信聯系
返回頂部