91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Giraph源碼分析(六)——Edge 分析

發布時間:2020-07-20 13:47:53 來源:網絡 閱讀:216 作者:數瀾 欄目:大數據

1.在Vertex類中,頂點的存儲方式采用鄰接表形式。每個頂點有 VertexId、VertexValue、OutgoingEdges和Halt,boolean型的halt變量用于記錄頂點的狀態,false時表示active,true表示inactive狀態。 片段代碼如下。

Giraph源碼分析(六)——Edge 分析cdn.xitu.io/2019/8/12/16c84c9359655583?w=600&h=215&f=png&s=33609">
2.org.apache.giraph.edge.Edge 接口,用于存儲頂點的邊,每條邊包含targetVertexId和edgeValue兩個屬性。類關系圖如下:

Giraph源碼分析(六)——Edge 分析

Giraph默認使用DefaultEdge類存儲邊,該類中有兩個變量: I targetVertexId和 E value,I為頂點ID的類型,E為邊的類型。注意,DefaultEdge類同時繼承ReusableEdge<I,E>接口,在ReusableEdge<I,E>類的定義中,有如下說明文字:
A complete edge, the target vertex and the edge value. Can only be one edge with a destination vertex id per edge map. This edge can be reused, that is you can set it's target vertex ID and edge value. Note: this class is useful for certain optimizations, but it's not meant to be exposed to the user. Look at MutableEdge instead.

從上述說明文字可知,edge可以被重用,只需要修改targetVertexId和value的值就行。即每個Vertex若有多條出邊,只會創建一個DefaultEdge對象來存儲邊。
3.org.apache.giraph.edge.OutEdges 用于存儲每個頂點的out-edges。從Vertex類的定義可知,頂點的每條邊都被存儲在OutEdges類型的edge對象中,OutEdges接口的關系圖如下:

Giraph源碼分析(六)——Edge 分析

Giraph默認的使用ByteArrayEdges<I,E>,每個頂點的所有邊都被存儲在byte[ ]中。當頂點向它的出邊發送消息時,需要遍歷Vertex類中的edges對象。示例代碼如下:

Giraph源碼分析(六)——Edge 分析
注意:由DefaultEdge的定義可知,遍歷getEdges時,返回的Edge對象時同一個對象,只是該對象中值改變了。下面繼續查看代碼來證明此觀點。
查看ByteArrayEdges類的iterator()方法,如下:

Giraph源碼分析(六)——Edge 分析
返回的是內部類ByteArrayEdgeIterator對象,定義如下:

Giraph源碼分析(六)——Edge 分析

總結:當頂點的出度很大時,此優化甚好,能很好的節約內存。如UK-2005數據中,頂點的最大出度為 5213。
假設頂點1的出度頂點有<2 , 0.4>,<3 , 7.8> ,<5 , 6.4> 。如下代碼:

Giraph源碼分析(六)——Edge 分析
輸出結果為:
[ 2 ]
[ 3 , 3 ]
[ 5 , 5 , 5 ]
并非是希望的 [ 2 , 3 , 5 ]

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴化市| 南投市| 阿尔山市| 荣成市| 肇庆市| 祁门县| 抚远县| 夹江县| 博客| 海门市| 平南县| 阜新市| 平武县| 大城县| 宣城市| 麻江县| 温泉县| 娱乐| 娱乐| 探索| 隆尧县| 黑龙江省| 阜阳市| 浦东新区| 扎兰屯市| 巴彦县| 裕民县| 延长县| 丹巴县| 澄迈县| 西平县| 车致| 安多县| 宁明县| 丹东市| 南木林县| 上高县| 布尔津县| 防城港市| 巴彦县| 茶陵县|