[英]C99 variable length automatic array performance
在64位x86 Linux平台上使用帶有g ++ / Intel的自動數組是否會產生顯着的CPU /內存開銷?
int function(int N) {
double array[N];
與先前分配數組相比的開銷(假設函數被多次調用)
與使用新的相比開銷
與使用malloc
相比的開銷
N的范圍可以粗略地從1kb到16kb,堆棧溢出不是問題。
VLA和靜態大小的陣列之間的性能差異應該可以忽略不計。 您可能需要一些額外的指令來計算堆棧的增長量,但這應該是任何實際程序中的噪聲。
嗯,進一步考慮,根據局部變量在內存中的布局以及是否存在多個VLA,也可能存在一些開銷。
考慮你有本地人的情況(並假設他們按照指定的順序放入內存)。
int x;
int arr1[n];
int arr2[n];
現在,無論何時需要訪問arr2
,代碼都需要計算arr2
相對於基指針的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.