估算的應用與Little定律

2021-06-15 09:37:18 字數 2291 閱讀 7252

分類: 珠璣之櫝

學習筆記

演算法 2013-06-26 08:35

204人閱讀收藏 

舉報估算的資料主要依賴於所能獲得的資料和常識,有時還包括實踐而不僅僅是理論。它常常作為乙個大問題中的子問題,恰當地估算可以省去精確計算的時間和開銷。在計算機領域,所謂常識的內容很寬泛,比如硬碟的傳輸速度、cpu每秒能執行多少指令、各種資料結構的大小甚至每分鐘錄入的單詞數。有些資料是能夠從各種資料中查得的,但僅僅靠記憶總難免遺漏;如果有經過學習而建立起的系統的知識結構,那便能很方便地把這些常識組織起來,除此以外,還可以靠平時經驗的積累和一些面試題上的啟發了。這裡將進行乙個收集,隨時更新。

little定律深入了估算所依賴的法則的細節:總花費等於各個部分的花費再乘以總的部分數,它在計算機系統方面的一些計算中十分有用。

計算機方面的估算問題:

1.硬碟檔案讀寫速度的小問題:是否能超過10mb/s?(筆者某次面試中被問到的的乙個關於伺服器的問題的子問題)

分析:根據以往拷貝檔案的經驗,對於不是多個零散小檔案的情況,讀寫速度比這個值要快得多,因此做出了肯定的答案。

2.確定乙個空迴圈for(i=0;i

分析:先把空迴圈化為彙編指令:

loop:

mov dx i

inc dx

mov i dx

cmp i n

jl loop

一共5條指令,假設使用的cpu是單核2.4ghz即每秒2.4g個時鐘週期,(常識)現代cpu每個時鐘週期執行兩條以上的**,那麼一秒鐘可以執行空迴圈(2 400 000 000 *2)/5 = 960 000 000次。

(為了提高精度而進行降低數量級的優化不再討論)

3.struct node 是否可以將這樣的2 000 000個結點裝入128mb記憶體的計算機中?(《程式設計珠璣》7.2效能估計)

分析:為了簡化討論,假定在32位機上int和指標都是32位的,共用了8b,直接計算的結果是只需16mb空間,而《程式設計珠璣》作者的128mb的計算機通常有85mb空閒,看上去是夠用的。然而使用malloc()為結點分配空間時會額外占用空間(原因:malloc的機制,linux的malloc()有乙個每次分配的最小大小,小於這個值也會分配這麼多;struct的對齊),這個值在作者計算機上是40b,導致了一共占用了96mb空間,事實上是不夠用的。

實際的單次運算時間可能慢得多,因為sqrt()可能儲存了最近引數作為起始值。

(更多待補充……)

估算常用法則:

1.「72法則」:以年利率r%進行投資y年,如果r * y = 72,那麼投資差不多會翻倍。

如果以t = (1+r/100)y,並把r代換成72/y,即t = (1+72/(100y))y,進行作圖,會發現這一段t的值都在2附近,符合這條法則。

應用:假設乙個指數程式解決n=40的問題需要10s,且n每增加1執行時間就增加12%,那麼根據72法則,n每增加6,執行時間就加倍。進一步地,n每增加60,執行時間就為原來的1000倍(210的近似數)。

2.(記憶常識)π秒是乙個納世紀。

注:一年有3.155 * 107秒,而π取3.14、納世紀為100年 * 10-9 ,這時兩者的積與這個值近似。

3.little定律:佇列中物體的平均數量為進入速率與平均停留時間的乘積。

應用:多使用者系統的響應時間公式,思考時間z的n個使用者登入到響應時間r的系統,每個使用者週期都為使用者的思考和系統響應,即z+r;作業總數為n,那麼對乙個時間點來看,平均負荷為n、平均響應時間為z+r,吞吐量為x(每個時間單位處理的作業數),根據little定律,n = x*(z+r),這樣就可以求解r = n/x -z。

例1:(程式設計珠璣(續),7.4節)乙個計算機系統,包括磁碟、處理器、作業系統和20個思考時間為20秒的終端,通過觀察,它的磁碟每處理乙個作業就要處理100個資料請求,而磁碟每秒鐘可以處理25個請求。那麼系統的吞吐量和響應時間各為多少?

解答:吞吐量直接計算,為25/100=0.25個作業/秒,響應時間r = 20/0.25 -20 = 60秒。這在流平衡下就是精確解。

例2:(程式設計珠璣(續),習題7.8)假設乙個作業在某機器上執行時間是20秒,該機器一次可能同時執行10個作業,而你的作業是100等待執行的作業中的最後乙個,作業以先進先出方式執行。大概需要等多久才能等到作業執行結束?

解答:這裡要考慮兩個排隊系統:待執行任務佇列和計算機系統本身。根據little定律,第二個系統任務輸出率x=l/r,l=10個任務,r=20秒,因此x=0.5個任務/秒。這也是第二個系統的任務到達率。因此最後乙個任務會在前99個任務在198秒後完成時進入,再加上20秒的執行時間,總的時間是218秒。

二八定律與長尾理論在SEO營銷中的應用

隨著seo優化在中國市場的迅速傳播,關於seo營銷的討論也隨之成為業內關注的話題。現今許多企業開始利用seo技術展開網路營銷,也開始對seo營銷進行思考 研究和爭論。而二八定律與長尾理論在seo營銷中的應用就是乙個重點話題。二八定律是一位義大利經濟學家巴萊多發明的,又稱二八法則。根據二八法則,企業8...

排隊論與里特定律在專案中應用的思考

最近小孩老生病,經常跑醫院,經歷了無數次的排隊,即心煩又無可奈何,不自覺對排隊理論做了一些思考,對看板方法中的限制在製品有一些新的感觸。排隊規則分為等待制 損失制和混合制三種。服務機構可以是乙個或多個服務台。多個服務台可以是平行排列的,也可以是串連排列的。服務時間一般也分成確定型和隨機型兩種。排隊論...

二八定律在效能測試中的應用

在生活中,做任何事情之前,最好先確定乙個目標。同樣的,在我們日常做效能測試之前,最好把本次預期效能指標確定下來,沒有預期指標的衡量,將無法評估測試結果資料是否滿足預期。比如以下這樣的指標 介面預期tps 查詢介面 入庫介面 在實際工作中呢,最理想的情況是,開發 產品 專案經理已經提前確定好了效能指標...