Re: [問題] 再問 *(取值) 與 copy assign的效率呢!?
包含上面那個.和->的差異
這些問題的答案都是case by case的...
先從簡單的說 .和->的差異
這去看inside the C++ object model裡面就有寫啦
class裡面沒有vptr的情況下 這兩者一樣快
.只不過是透過this指標去取值
這兩個都要作一次 derefernce
在動態多型的情況下
要在run time去查vptr的(指標的->, reference的.)一定比較慢
效率數據的比較在書裡都有列了
下面那個問題
我不太懂*iter指的是什麼
是一個dereferece後能轉型成A*的iterator,還是單純是一個A*
如果iter其實只是A*
你不該用這個變數名稱..
如果是前者 這牽涉到的變因太多了
包含你iterator的實作結構、轉型的overhead
iterator在dereference的時侯有沒有side effect..
這些變因造成其效率要實測才知道
如果是後者 在compiler最佳化下通常是沒差的
(*iter)的值,就算你不用一個變數存起來
Compiler在最佳化的時侯也會弄進一個暫存器裡
※ 引述《asail0712 (emeth)》之銘言:
: A *a = *iter;
: if(a)
: {
: a->...
: }
: 或是
: if(*iter)
: {
: (*iter)->....
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.5.35
※ 編輯: holymars 來自: 114.32.5.35 (12/19 11:41)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):