是否在64位x86 linux平臺上使用帶g ++/Intel的自動陣列相關的cpu /內存開銷很大?C99可變長度自動陣列性能
int function(int N) {
double array[N];
- 相比分配前手陣列
開銷相比相對於使用
malloc
開銷(假定函數被調用多次)
開銷
N的範圍可以是粗略地從1kb到16kb,堆棧溢出不是問題。
是否在64位x86 linux平臺上使用帶g ++/Intel的自動陣列相關的cpu /內存開銷很大?C99可變長度自動陣列性能
int function(int N) {
double array[N];
開銷相比相對於使用malloc
開銷(假定函數被調用多次)
開銷
N的範圍可以是粗略地從1kb到16kb,堆棧溢出不是問題。
VLA和靜態大小數組之間的性能差異應該可以忽略不計。你可能需要一些額外的指令來計算堆棧的增長量,但在任何真正的程序中都應該是噪聲。
嗯,根據進一步的想法,也可能會有一些開銷,取決於局部變量如何放在內存中以及是否有多個VLA。
考慮一下你有當地人的情況(並且假設他們按照他們指定的順序放在內存中)。
int x;
int arr1[n];
int arr2[n];
現在,每當你需要訪問arr2
,代碼需要計算arr2
相對的位置,您的基本指針。
謝謝。這是我的直覺,只是想加倍肯定。幸運的是,我只需要擔心單個VLA陣列 – Anycorn 2010-06-10 23:16:29
你說的自動數組是什麼意思? – AraK 2010-06-10 23:01:56
相比,開銷是多少? – sth 2010-06-10 23:03:37
我認爲他正在討論在C99版本的語言中添加到C中的變長數組。這是正確的aaa? – 2010-06-10 23:03:50