2011-07-27 91 views
1

例如,我有:將通用聲明變量聲明爲全局是否有任何好處?

char query[512]; 

在我的應用程序,它連接到MySQL數據庫申報約27倍。

每次大小相同,並在許多不同的功能中聲明。

此應用程序永遠不會使用線程。

在用snprintf設置查詢後,查詢總是立即執行。 在設置和執行查詢之間沒有任何功能將其搞亂。

將它聲明爲全局變量是否有任何好處或性能提升?

回答

3

當然,就內存消耗而言。每個對象都會消耗大量的字節,這意味着您可能會爲該特定變量使用少27倍的內存。另外,創建這些對象會有少量開銷。總體而言,這不會產生重大影響,但在這種情況下重用是最佳做法。

1

我會說在性能方面有好處,但是取決於應用程序的大小,它可能可以忽略不計,但並未優化。 推理是用一個全局變量來表示的,你一旦從蝙蝠聲明它,計算機就知道它在哪裏,你所做的就是改變它。否則,你必須不斷重新制作它,我想像的速度並不像總是存在的那樣快。

1

我所知全球varible工作就像一個高速緩存,因爲它分配在程序開始其訪問速度比其他變量..,如果分配每一次一個新的變量比它只是CPU週期的浪費剛剛分配存儲器給堆棧的變量...因此,作爲全局變量

2

訪問堆棧變量使用通常是等效於訪問的偏移到在寄存器已經是指針。訪問全局變量幾乎總是要求首先加載全局變量的地址。

所以,如果你要挑選尼特,使用堆棧變量。除非打開其他編譯器開關,否則會增加堆棧使用的額外開銷。

當然,這真的取決於你的具體背景(即CPU,編程語言等)。因此,它可以是。