用經濟的策略去設計

2021-06-08 21:10:34 字數 1229 閱讀 2650

用經濟的策略去設計

什麼方法是經濟的? 就是投入產出比高的方法,就是經濟的方法。在設計中,我們會遇到很多問題,

判斷這些問題的解決方法的好壞取決於這些是否經濟。

舉乙個例子,如果我們要讀乙個檔案,在記憶體許可的條件下,我們是採用小i/o的方式去讀,還是採用大i/o的方式去讀,這個問題其實是比較簡單,

很多人,應該採用大i/o的方式去讀,因為採用大i/o讀可以減少很多次的互動。其實,這就體現一種經濟的策略。

採用經濟的方法去設計,就是我們要採用最直接的方法去達成我們的目的。在軟體設計領域,我們採用經濟的策略去設計,就是要減少對cpu、記憶體、磁碟i/o的使用。

我們需要花費比較小的代價,去達成目的。但是cpu、記憶體、磁碟i/o、執行緒這些因素是相互制約的,我們必須權衡,根據特定的效用去選擇我們的設計。

其實,在現實中,我們去購買一件物品,我們採用經濟的策略去購買,也不單單從**的角度去考慮,我們根據品牌、質量、效用等多個因素去權衡,從而在一定的價位購買          具有某種品牌、效用、質量的產品。

在我們的軟體設計中,我們也從占用一定的cpu利用率、一定的記憶體、一定的執行緒、一定磁碟利用率去達到某種效能水平的設計。

比如,檔案系統設計,檔案系統在檔案順序大i/o讀寫的情況,其效能是很高,但是在小i/o的情況下,其效能就會很差,在這種情況下,我們會採用經濟的方法去設計,也就是         從某一種效能水平,我們可能會浪費一定的記憶體去做讀、寫cache,從而進行對寫i/o進行聚合,或者對讀請求進行預讀。如果在cache的條件下,還是不能提高效能,我們         有可能採用某一定價位的磁碟,即選擇轉速相對比較大的磁碟介質,當然轉速大,**也就相對高。

而這時的設計,擺乙個問題:如何採用最經濟的方式去實現某一效能水平的檔案系統。

小到**級別的經濟方式:減少記憶體拷貝,最好考慮是否能夠做到零拷貝;減少等待時間,這時要考慮併發、流水線;減少函式呼叫層次,寫圈複雜度低的**,設計好類              的層次,繼承;減少i/o互動數次。

大到設計級別的經濟方式:變隨機i/o為順序i/o,變小i/o為大i/o,變同步為非同步,變cache i/o 為直接i/o。

採用經濟方式去設計,首先要考慮好的你的效用,或者是你的目標,然後從你的眾多設計,去掉那些曲折的方式,以最小的代價去達成你的目標,尤其在設計的時候,要考慮          這個步驟是否必須的,是否可以裁掉。

採用經濟的觀點去設計,在我們設計未知的領域的時候,也許是一種好的方式,就如貪心演算法,我們不知道最優演算法是什麼,但是我們從我們的角度,選擇經濟的方式。

聚焦落地應用 NGK推動實體經濟的策略

從第一枚位元幣被中本聰挖出到現在,區塊鏈的發展已有10年。公鏈也走過了從以位元幣為代表的區塊鏈1.0,到以以太坊為代表的區塊鏈2.0,再到以eos為代表的區塊鏈3.0的成長之路。隨著技術的進步以及落地應用的增加,公鏈的發展進入了全新的階段。公鏈面向所有人公開,是應用範圍最廣的區塊鏈。它是分布式賬本 ...

設計模式的原則和策略

1 開閉原則 2 從背景設計原則 高層模組不應該依賴於底層模組。高層模組和第層模組都應該依賴於抽象。抽象不應該依賴於細節。細節應該依賴於抽象。3 封裝變化原則 4 抽象類與介面 5 理性懷疑原則 兩大強大設計原則 從背景設計 在類中封裝變化 開閉原則 模組 方法和類應該對擴充套件開放,對修改封閉。換...

軟體架構設計的策略

知道了軟體架構的關鍵,面對有一定複雜與難度 或有競爭性目標的龐大需要的軟體系統,沒有乙個好的設計策略,完全依靠設計師的經驗與能力,往往會讓設計師顧此失彼,無法保證軟體系統的成功。上面講到,軟體架構工程師沒有時間也沒有必要對所有需求進行深入分析 而功能或用例確定了軟體架構的大的方向 幾個關鍵的非功能需...