簡體   English   中英

向量 <vector<int> &gt;需要太長時間的初始化

[英]vector<vector<int>> takes too long initialize

我有一些用c ++編寫的代碼,它是一個簡單的程序,可以找到具有3000多個頂點的圖形的成對dmin。 所有邊都具有相同的權重1.所以我在所有頂點對上做BFS。

我的程序運行速度不夠快,所以我使用Xcode 4.2.1的product-> profile對我的代碼進行了分析。 它稱為“樂器”工具。 過了一會兒,我想出了如何使用它。 但我得到的是非常混亂。 突出顯示的行如何使用這么多時間? 任何想法都高度贊賞。

我定義了:矢量訪問; vector <vector> G; //鄰接列表 在此輸入圖像描述

儀器運行告訴你,訪問[G [n] [i]]的絕大部分時間都是正確的。

在聲明中占絕大多數時間:( (visited[G[n][i]] == false)將是由於大量緩存未命中。

請注意, G是一個大的3k * 3k矩陣,占用連續的虛擬內存空間,而visited是另一個3k陣列,它在虛擬內存空間的不同位置占用另一個連續內存。 根據處理器緩存的容量,訪問同一語句中的兩個內存位置將導致大量緩存未命中。

為了加速,重寫程序時要記住參考的位置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM