簡體   English   中英

C99可變長度自動陣列性能

[英]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.

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