A05: introspect
主講人: jserv / 課程討論區: 2016 年系統軟體課程
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
返回「進階電腦系統理論與實作」課程進度表
預期目標
作業要求
開發紀錄(phonebook) / github / youtube_link ::: Reviewed by <jserv
>
- 每份開發成果至多只能被 2 個人批評,"Reviewed by" 後面的 GitHub 帳號用逗號
,
分隔
- 選定開發紀錄後,編輯內文,加上
Reviewed by 你的GitHub帳號名稱
的段落,示範的 Review,你的意見要寫在共筆的最上方,僅次於 "contributed by"。要從以下方面探討:
- 程式碼的 coding style, git commit messages
- 實驗設計的不足處、涵蓋程度是否全面,以及後續的改進空間
Git commit messages
- 沒有嘗試不同的 data set,原本的程式輸入是已排序、非典型英文姓氏,這與現實不匹配
- 實做提到透過引入 hash 加速
fineName()
的操作,但缺乏不同 hash function 的效能比較和設計取捨
- 在
append()
中,malloc()
是個顯著的時間開銷,缺乏減緩效能衝擊的方案
- 卻乏搜尋演算法的評估和效能分析
- 考慮到電話簿需要作到動態資料新增和刪除,若引入 hash,面對大量資料時,會有什麼影響?
- 儘管已經整理頗多 perf 和效能測量的資料,但並未反映到此程式效能分析,除了 cache miss,還請一併探討 branch prediction accuracy 等議題
main.c
無法透過 function pointer 來切換和比較不同實做的效能落差,應該先設計一份可通用的軟體界面,然後將 binary tree, hash table, trie 等不同實做機制加入
- 將
append()
和 findName()
時間加入統計的意義不大,真實應用往往是個別操作,特別在圖表的呈現
- commit f561e 的 Git commit 訊息不需要特別指出檔名,而且不容易理解具體行為和影響,為何要作這樣的修改?
phonebook_opt.[ch]: move out dict