我剛剛開始使用作者聲稱爲「高度優化」的一段代碼。在某些時候,他們這樣做:定義靜態全局數組以避免在函數中定義它
namespace somename
{
static float array[N];
}
float Someclass::some_function(std::vector<float>& input)
{
// use somename::array in some way
return result;
}
作者並沒有包含在類somename::array
因爲與持久性代碼的問題(我們幾乎沒有控制權)。當調用some_function
時,該類對數組執行O(N^2)操作。所以,如果我提出array
函數調用裏面,
float Someclass::some_function(std::vector<float>& input)
{
float array[N];
// use somename::array in some way
return result;
}
是合理的預期性能下降?換句話說,顯而易見的是,在許多不同的系統和編譯器中,作者的優化(使用全局數組而不是一個函數內部)將有助於性能?
你爲什麼認爲這是一個優化? –
你的意思是'系列化'而不是'殺菌'嗎? – sank
@DavidSchwartz好吧,我不確定是否,作者似乎這麼認爲。我假設,因爲它不需要函數每次調用時重建數組。另一方面,大多數現代編譯器可能足夠聰明,可以對此進行優化。 – Shep