你無法斷定程式會在什麼地方耗費執行時間。瓶頸經常出現在想不到的地方,所以別急於胡亂找個地方改**,除非你已經證實那兒就是瓶頸所在。
估量。在你沒對**進行估量,特別是沒找到最耗時的那部分之前,別去優化速度。
花哨的演算法在 n 很小時通常很慢,而 n 通常很小。花哨演算法的常數複雜度很大。除非你確定 n 總是很大,否則不要用花哨演算法(即使 n 很大,也優先考慮原則 2 )。
花哨的演算法比簡單演算法更容易出 bug 、更難實現。盡量使用簡單的演算法配合簡單的資料結構。
資料壓倒一切。如果已經選擇了正確的資料結構並且把一切都組織得井井有條,正確的演算法也就不言自明。程式設計的核心是資料結構,而不是演算法。
沒有原則 6
——notes on c programming
(英文原文),rob pike
ken thompson —— unix 最初版本的設計者和實現者,禪宗偈語般地對 pike 的原則4 作了強調:
拿不準就窮舉
WINDOWS核心程式設計 核心物件
今天想把看的第三章的心得寫下來。這章主要介紹了核心物件。在windows中,核心物件是由作業系統來管理,儘管使用者能夠建立它,但是在建立之後,使用者對該核心物件的操作都是委託給作業系統。通常使用者建立和使用的物件分為 使用者物件 如 hicon createicon prama gdi物件函式以及核...
Windows核心程式設計 核心物件
每個核心物件只是核心分配的乙個記憶體塊,只能由核心訪問.該記憶體塊是一種資料結構,它的成員負責維護物件的各種資訊,由得物件型別相同,但大多數不同,比如程序物件有個程序id,乙個基本優先順序,乙個退出 檔案物件則有乙個位元組位移,乙個共享模式,乙個開啟模式 如果核心控制代碼傳遞給另外乙個程序,那麼這另...
Windows核心程式設計 核心物件
每個核心物件只是核心分配的乙個記憶體塊,只能由核心訪問.該記憶體塊是一種資料結構,它的成員負責維護物件的各種資訊,由得物件型別相同,但大多數不同,比如程序物件有個程序id,乙個基本優先順序,乙個退出 檔案物件則有乙個位元組位移,乙個共享模式,乙個開啟模式 如果核心控制代碼傳遞給另外乙個程序,那麼這另...