2012-08-28 28 views
1

當使用關聯容器中,我觀察到,至少有時一系列:關聯容器的引用

container[key].field1 = something1; 
container[key].field2 = something2; 
container[key].field3 = something3; 

產生較小的二進制(可執行)比,說

auto& c(container[key]); 

c.field1 = something1; 
c.field2 = something2; 
c.field3 = something3; 

我我很困惑。 AFAIK,需要查找每個container[key] = ...聲明的值。編譯器是否優化了這些查找?什麼是最好的事情?

+0

哪個編譯器和哪個編譯器選項? –

+0

gcc,-Os -finline-functions – user1095108

+1

「小」是什麼意思?你的意思是生成的可執行代碼的字節數? –

回答

5

「最好做什麼?」

最好的辦法就是不要看這樣的細節,因爲明天(或者下一個版本的編譯器,庫或咖啡機發布時)都會有所不同。

最後, 「做最好的事情」 是編寫代碼,

  • 是可讀
  • 維護
  • 自我記錄
  • 工作

所以,比較你的解決方案,並保持「感覺更好」或「看起來更好」。我可能會保留一個只做一次查找的人,因爲它強調所有事情都發生在同一個對象上。

+0

對於您提到的其他要求,代碼可能不是這種情況。 – user1095108