我忽略了「風格」爲理由,內聯/非內聯代碼。這當然是一個非常重要的部分。
operator=
的例子是一個很好的例子,我會內聯。它僅增加了代碼一點點:
一個this
和地址的c
之間比較,一個分支,以free
通話和strdup
(和存儲返回值)的呼叫。
但是,如果您的operator=
變爲10-15行,則撥打更多的電話給free
或delete
等,那麼可能使非內聯是個好主意。與許多事情一樣,這是一個判斷(或者給它一個奇特的名字「工程決策」,但大多數時候這些只是「我知道這會工作正常」),並且真正知道哪個更好的是,你需要測量和分析你的代碼,以瞭解它花在哪裏的時間,以及「我怎麼做得少」。
最重要的功能是在循環內部使用的功能,特別是那些迭代次數較多的功能。大多數程序都有一到六個這樣的「大部分時間都花在哪裏」的循環。優化其他代碼是毫無意義的,因爲它可能會在執行主循環一百萬次的程序執行過程中執行十次。讓「十幾次」代碼在每個通話中運行12個時鐘週期並不重要。讓你百萬次的內在部分在每個循環中循環更快12個時鐘週期可能會有所作爲,因爲現在它快了1200萬個週期。如果你在中央循環中有30個函數調用,並且你平均每個循環快12個週期,那麼現在我們正在談論數以億計的週期,所以現在我們處在一個現代處理器的十分之幾秒鐘內。
與你的問題無關,但對於字符串,你爲什麼不使用'std :: string'? –
因爲我還不能使用它(與學校有關的項目)。 – Mxsky
新增並刪除C++,malloc和c – Gilad