Go 並發排序

來源:互聯網
上載者:User

標籤:com   記憶體   隨機   分塊   out   ems   比較   chunk   實現   

單機版外部排序ArraySource

支援分塊

建立一個用於排序的源頭,通過可變參數...傳入設定的值,返回的時候注意要close(out)

InMemSort

建立一個內部排序函數,從記憶體中擷取並利用sort.Ints(a)來排序。

使用:

Merge

針對多個源進行排序,與上面區別是輸入源多了一個,需要判斷

使用

ReaderSource

讀取資料來源,chunkSize是確認讀取資料大小,如果讀完就不讀了。注意這裡語句make([ ]byte,8)

WriteSink

寫入資料

RandomSource

利用隨機數產生資料

MergeN

搭建歸併節點群組

歸併排序

 使用

外部排序整合小檔案

使用:

具體實現:

運行結果(查看大小)

外部排序整合大檔案在pipeline0807裡增加

(因為大檔案一會讀不玩,我們利用時間看下到底是怎麼的)

在InMemSort中增加輸出,並將out建立時候,改成1024

在Merge裡增加輸出

 在外部排序裡面增加

在createPipeline調用init函數

修改主函數:電腦是4核的,因此參數為4比較划算,檔案大小改為800000000比較慢,這裡我採用較小的

輸出大致為:

 

Go 並發排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.