2013-10-09 47 views
0

功能的一個版本,map stl查詢一次,並保存在一個局部靜態變量地圖查找函數調用Vs的緩存查找的靜態變量

inline const string & dataInputPath() 
{ 
    static string inputpath = Mngr.getStr("input"); 
    return inputpath; 
} 

功能版本二,循環起來我們每次調用函數

inline const string & dataInputPath() 
{ 
    return Mngr.getStr("input"); 
} 

我有previos兩個函數調用, 我想知道

  1. 什麼被認爲更合適?
  2. 優點和缺點?
  3. 哪一個你喜歡使用,爲什麼?
  4. ,如果有緩存結果作爲右值getStr返回類型的方法是const string&

回答

0

在第一階段,一旦dataInputPath被調用,值永遠不會更新,即使在地圖的價值被改變。

我只是直接從地圖中檢索值。如果有必要,將它留給調用代碼以便以合理的方式緩存值。

由於關鍵的「輸入」是硬編碼的,爲什麼不只是有全局的input_string變量?

+0

我只有4個鍵,所以下一步就是將它移動到一個枚舉鍵。但mapValue永遠不會改變 – aah134