達夫裝置(Duff’s device) 是一種用來進行複製的特殊寫法,它非常巧妙地運用 C 語言 switch-case
的特性來達成,但這種寫法真的滿噁心的(連作者自己也使用 Disgusting 來描述)。
之所以會寫得這麼特別,主要是要處理 count
不能被 8 整除的情況。
它最初被用來改善運行速度,雖然在現代,編譯器最佳化後普通寫法的效能可以輕鬆達到並超越這種寫法,所以我們確實不用再實際用到這種寫法了。
更何況 memcpy()
比它好看太多了,而且各個平台和編譯器可能會對它有額外的最佳化,但我覺得 Duff’s device 還是相當值得看看。
看!我第一次知道 case
可以打破並穿插在同一個 block 之間,在裡面像 goto
一樣跳轉。
留言可能不會立即顯示。若過了幾天仍未出現,請 Email 聯繫:)