localityofreference

    1熱度

    2回答

    考慮到一個指向函數的指針返回另一個指向另一個函數的指針是C中用來引入一些運行時多態/回調的機制,實現這個的等效方式是什麼在C++中,同時改善局部性並降低關於指針和間接指向的成本? 例如this syntactic sugar可以幫助,但我並不是真的對此感興趣,儘管這是一種以C++方式而不是更多C-ish做事情的好方法,我更感興趣的是在嘗試改進本地減少運行時顯式指針的使用。

    1熱度

    1回答

    我目前正在嘗試編寫一個map-reduce作業,其中輸入數據不在HDFS中,並且無法加載到HDFS中,這主要是因爲使用數據的程序無法使用HDFS中的數據,要將其複製到HDFS中,每個節點至少需要1TB。 所以我有4個目錄在我的集羣中的每個節點。理想情況下,我希望我的映射器只接收這4個本地目錄的路徑並使用file:/// var/mydata/...之類的東西讀取它們,然後1個映射器可以處理每個目錄

    4熱度

    4回答

    比方說,我有它的實現看起來是這樣的一個C++類: // ... MyClass::iterativeFunction() { for (int i = 0; i < 1000000; i++) { performAction(i); } } MyClass::performAction(int index) { // Block of code

    4熱度

    1回答

    我正在學習關於空間局部性的緩存操作。 (我引用至今都原則林和斯奈德,this tutorial並行編程的,當然還有維基百科)。 看看下面的例子,用gcc編譯,在Windows 7 Professional上運行,採用Intel酷睿2雙核CPU( L7500)。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main

    4熱度

    2回答

    分區功能是否給快速排序其參考的位置? 如果是這樣,怎麼樣? 我的意思是什麼在快速排序中給它的參考位置與其他算法比如合併排序或堆排序? 我也讀到 「快速排序中的分區步驟典型地具有極好的局部性,因爲它訪問正面和背面附近連續數組元素」。 我沒有得到它?

    11熱度

    4回答

    for(int i = 0; i<100; i++) for(int j = 0; j<100; j++) array[j][i] = 0; // array[i][j] = 0; 我的教授說,以第一種方式初始化一個二維數組比第二種方法要昂貴得多。有人可以解釋引擎蓋下面發生了什麼事情嗎?或者,這兩種初始化方式是否具有相同的性能?

    2熱度

    2回答

    我正在閱讀關於Locality of Reference的維基百科文章,而我不禁要找到對等距離地區給出的解釋相當神祕。 我真的無法理解它,我想知道是否有人可以試圖用簡單的英語來解釋它? 等距離局部性:它位於空間局部性和 分支局部之間。考慮以等距離模式訪問位置的循環,即,空間 - 時間座標 空間中的路徑是虛線。在這種情況下,一個簡單的線性函數可以預測在不久的將來將訪問哪個位置。 這是什麼意思與「循環

    2熱度

    2回答

    考慮到具有移動和新內存控制器的新指令的新CPU,如果在C++中,我有一個向量Derived對象,其中Derived由虛擬成員函數組成,這對於本地是好事還是壞事? 如果我有一個指向基類Base*的指針向量,我在那裏存儲對從Base起1-2-3級別的派生對象的引用? 基本上動態類型適用於這兩種情況,但哪一種更適合緩存和內存訪問? 我對此有兩個偏好,但我希望看到關於這個問題的完整答案。 在過去的2 -

    10熱度

    1回答

    假設我們有一個未排序的數組和鏈表。 搜索一個元素的兩種數據結構的最壞情況是O(n),但我的問題是: 由於在緩存中使用空間局部性,數組仍然會更快,或者緩存使用分支位置允許鏈接列表與任何數組一樣快? 我對一個數組的理解是,如果一個元素被訪問,那麼這塊內存和許多周圍的塊會被帶入高速緩存,從而允許更快的內存訪問。 我對鏈接列表的理解是,由於遍歷列表的路徑是可預測的,因此緩存將利用該緩存並仍然存儲相應的內存