cost 325 ms
對齊結構以減少緩存命中?

[英]Aligning an structure to reduce the cache hits?

我想改進以下結構的數據局部性: Output 有什么辦法可以使用packing和alignment來盡可能減少cache的命中次數? 我確實知道我計算機上緩存行的大小是 64,這是結構大小的一半(您可以使用命令sysctl hw.cachelinesize在macos上獲取此信息)。 如果有人知 ...

在對齊聯合中以不同方式對齊數組元素

[英]align array elements differently in aligned union

我正在使用 SSE/AVX,我需要存儲對齊的數據。 然而,我的數據可以是不同類型的。 所以我使用這樣的聯合 我可以執行以下操作嗎? 所以我希望Ints32和Bool元素對齊為 4 個字節,而Int64元素對齊為 8 個字節。 因為Bar每個數組的第一個元素(或者基本上是&data )也應該對 ...

匯編語言中堆棧變量的 Alignment

[英]Alignment of stack variables in Assembly Languages

是否有任何匯編指令來對齊特定的堆棧數據變量? 例如,假設 MASM function 具有這些具有初始值的局部變量 memory 堆棧具有此布局,但請注意endStack未對齊 為了對齊endStack ,我嘗試將局部變量與 alignment pad[4]混合在一起 正確對齊endStack ...

Eigen::Map 原始緩沖區的 alignment

[英]Eigen::Map alignment of raw buffer

在使用 Eigen 庫時,我有一個模板化的 C++ class 包含一個原始緩沖區和一個 Eigen::Map 實例作為成員。 在 class 的構造函數中,我按如下方式初始化 map:template<int size> class TestEigenMapClass { publi ...

對指令 alignment 使用操作數大小覆蓋前綴 0x66

[英]Using the Operand-size override prefix 0x66 for instruction alignment

最近遇到了遺留的 0x66 操作數大小覆蓋。 是否可以在不顯式編寫單字節/多字節NOP 指令的情況下用於對齊指令? 例如添加align 16指令 生成此反匯編 刪除align 16並在mov rax,1前面加上重復的 0x66 忽略字節 生成此反匯編 0x66 alignment 技術是否有效且 ...

“一成不變”地雕刻結構內存布局

[英]Carving a struct memory layout "in stone"

也許這個話題已經被打死了,但我找不到任何“定論”的答案。 無論如何,我需要在 C++17 中指定一個普通的舊數據結構,它將作為“原始字節塊”從外部存儲器讀取/寫入/寫入。 這個外部存儲器內容必須“永遠”指定它的存儲器布局,而不管今天和未來幾十年有任何更改的編譯器設置、新的編譯器品牌或版本。 我目前正 ...

編譯器應用結構填充,即使它不需要

[英]Compiler applies structure padding even though it's not needed

我試圖了解結構填充在 C 中的工作原理。特別是在 Linux x86-64 環境中。 為此,我重新安排了給定結構的成員順序,以查看是否在不需要時不應用填充。 但是,當我編譯並運行打印每個結構大小時的代碼時,對它們都應用了填充,即使第二個結構 ( struct b ) 的成員排列方式不會將它們連續存儲 ...

由於擴展的 64 位變量導致的段錯誤

[英]SegFault due to an extended 64 bit variable

在將 32 位全局變量擴展到 64 位變量后,我試圖解決一個問題。 不幸的是,該程序因擴展的 64 位而崩潰。 當我比較生成的輸出 elfdump.txt 時,對於兩者:在全局變量擴展之前和之后生成的 elfdump.txt。 我發現程序頭現在是 6 個而不是 5 個擴展的 64 位變量,而當應用程 ...

struct數組占用的空間

[英]Space occupied by array of struct

關於數據 alignment 的《計算機系統:程序員的觀點》 (第 3 版(2015 年 10 月 6 日))一書的問題 3.44,我有一個問題。 問題: 對於以下每個結構聲明,確定每個字段的偏移量,即結構的總大小,對於 8 位 alignment:struct P1 {short i; int c ...

當我編寫應用程序時,我應該擔心 C 語言的結構 alignment 還是自動完成?

[英]Should I worry about structure alignment in C language when I write applications or it is done automatically?

我試圖了解結構 alignment 是否會影響我用 C 語言編寫的程序。 似乎它是為我們自動處理的東西。 問題是: 編寫應用程序時我應該擔心它嗎? 如果是,那么我到底應該什么時候擔心呢? ...

__align__ 如何在 cuda C 中工作?

[英]How __align__ works in cuda C?

我正在練習 Array of Struct (AoS)的練習。 帶/不帶__align__的結構的定義如下:#ifdef TESTALIGN8 struct __align__(8) InnerStruct { float x; float y; }; #else struct I ...

如何自動將結構中的字節填充到特定的 alignment?

[英]How to automatically pad bytes in a structure to a specific alignment?

例如,我有以下結構: 這種結構st的定義可能會隨着時間而變化(不能保證內部會定義什么...隨着開發的進行)。 有沒有辦法保證char y總是對齊——例如——一個 256 字節的邊界? 我想解決方案類似於添加如下數組: 是否有這樣一個keyword可以計算此結構中所有先前成員的總大小,從而有助於解決 ...

Modern.Net 中未對齊的指針有多安全?

[英]How safe are unaligned pointers in modern .Net?

我需要從本機 memory 讀取/寫入一堆結構。 我想弄清楚我是否應該打擾 struct alignment。 這是我編寫的用於測試的簡單代碼。 它將一個壓縮結構寫入未對齊的指針,然后讀回該結構: 我在我手頭的幾個系統(使用.Net 6.0)上對此進行了測試,它在它們上運行沒有問題。 規范說值類型 ...

gcc 的內存對齊警告

[英]Memory Alignment warning with gcc

我正在嘗試實現一個多態數據結構,例如一個侵入式鏈表(我已經知道內核有一個 - 這更多是學習經驗)。 問題是將嵌套結構強制轉換為包含結構會導致gcc發出內存對齊警告。 具體情況如下: 使用gcc tc -std=c99 -pedantic -fstrict-aliasing -Wcast-al ...

為什么 sizeof(my struct) 比我預期的要小?

[英]Why is sizeof(my struct) smaller than I expected it to be?

在定義二叉樹的時候,我發現了一個問題。 例如,在這段代碼中,int變量占用4個字節,int變量有3個。 加上Node* lchild和Node* rchild ,不應該是 36 字節嗎? 我自己的想法是把lchild當作同一個節點結構,所以lchild里面也有12個字節,也就是三個int變量。 ...

如何在 C++ 類中創建連續數據

[英]How to make contiguous data in class C++

我在 Windows 10 上使用 Visual C++。 我想讓Vector4類具有成員x, y, z, t並且它們連續存儲以提供operator[]和其他功能: 但我發現這樣的實現並不適用於每個編譯器(在 Visual C++ 上它運行良好)。 而且我不知道如何解決它,也許寫這樣的東西: c ...

Intel x86 與 AMD x86 CPU 上的未對齊訪問性能

[英]Unaligned access performance on Intel x86 vs AMD x86 CPUs

我已經實現了一個帶有結構內存布局數組的簡單線性探測哈希映射。 該結構包含鍵、值和指示條目是否有效的標志。 默認情況下,此結構由編譯器填充,因為鍵和值是 64 位整數,但條目僅占用 8 個布爾值。 因此,我也嘗試以未對齊訪問為代價打包結構。 由於更高的內存密度(我們不會在傳輸填充字節時浪費帶寬),我希 ...

如何將 IDA 生成的列表組裝回相同的可執行文件?

[英]How to assemble an IDA-generated listing back into an identical executable?

我正在嘗試將 IDA 生成的程序集文件重新組裝回生成反匯編程序的實模式 16 位 MZ 可執行文件。 我正在使用 TASM: tasm /m2 你好 tlink你好 這給了我很多警告,在 IDA 生成“對齊”指令的行上顯示“段對齊不夠嚴格”消息: 程序組裝、鏈接甚至運行,但在終止時崩潰 ...

如何在不因對齊而膨脹大小的情況下構造數據?

[英]How to structure data without bloating the size because of alignment?

假設我們有一個 struct Original是這樣的: 由於對齊, sizeof(Original)為 8 個字節。 4 用於 int,2 用於 bool,2 對齊“孔”。 但是當我決定,我想構建我的代碼,並且由於某種原因, x和y應該放在一起時,我可能想將此結構重構為: Origi ...


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