這是乙個非常有意思且非常發人深省的案例。
公司在做乙個元件的時候,一開始就以追求最高效率為目標。因此在制定方案的時候,採用了全部在記憶體中操作,從而獲取最佳效率。但是隨著應用中的資料量的提公升,效率在空間面前,越來越成為問題。
這個案例有意思的地方就是,最初是為了追求最好的效率,最後反而沒有得到好的效率。但又反過來讓我們來思考為什麼會出現這種情況呢?
xiammy想到的的第乙個問題在於:空間和時間的權衡。我們都學習過《演算法與資料結構》,知道空間和時間往往就是一對矛盾體。在這個問題上,我們一開始就想追求極限的時間上的優勢,對空間上的消耗可能帶來的影響反而忽略了。這個問題就是,極限地追求效率,非常有可能會增加對空間的占用。
在一定意義上,時間和空間是可以轉化的。愛因斯坦的相對論是這麼說的,我們的程式設計也是這樣的道理。所以我們在考慮時間的時候,必須考慮好我們是在多大的空間內考慮時間。
所以xiammy認為考慮效率的時候,同時必須定義空間的相對量。我們不應該拋離空間而單獨追求時間。簡單的說,追求的是1000條資料的效率,還是1,000,000條資料的效率。xiammy認為,不同的目標,其解決方案會有極大的不同。
就如前面案例中的所提到的,只是1000條,我完全可以全部裝載到記憶體中,然後再進行優化。但如果是極大的資料量,那麼一開始就必須放棄裝載到記憶體中的想法。這裡面還有一些微妙的地方,因為在最後的實際應用的壓力下,最終的系統必然要解決大資料量的問題,架構也必然要重構。可能你會想到一句話:殊途同歸。但是事實一般並不是這樣。種下的種子總是會對後來的事情有影響的。況且,在已有的系統上進行重構,還會被現存的**束縛,讓你重構也不得暢快。
在說回到乙個理念問題,我們如果一開始的時候就陷入到極限地追求效率上,反而應了那句話:物極必反。最後的效果反而不是最好。中國人的中庸思想在設計的時候還是有借鑑意義的。
web service設計中的效能問題
soa架構已經成為很多系統的架構選擇,在基於soa架構的系統的程式設計開發中,可以從以下三個點來關注效能問題。1 web service的呼叫。眾所周知,web service的呼叫中,網路上的時間消耗是乙個比較大的部分。這裡有兩個可以注意的地方。soap訊息的大小,標準的soap訊息以是xml文件...
提防iostream使用中的乙個「陷阱」
先看下面的示例 template typename t void test 試著按下面這樣呼叫它 test int 一點問題都沒有。再這樣呼叫 test char 你會發現當i 9的時候,assert在大聲地 抱怨 這種情況下,我們受了stream 放進去什麼,拿出來也是什麼 的假相的迷惑,往str...
考慮效能的設計與開發 效能設計
效能問題應該從系統設計時期開始考慮,並延續到系統的生命期終止之時。具有可伸縮性的系統是指當系統的負載增加一倍,系統需要的資源也同樣增加一倍。說起來簡單,但在現實環境中確難以做到。由於管理併發使用者的開銷的增長 鎖事務的增長 一致性讀負載的增加 作業系統負載的增加 低效的sql或索引設計導致的過高的i...