軟體構造 lab6吞吐率優化

2021-09-24 11:50:43 字數 617 閱讀 5373

為猴子選擇梯子時,其中的乙個策略是選擇距離起點最近的猴子速度最大的梯子。我以為這個方案吞吐率會很高,但實際執行時,在最後時刻經常出現這種情況:

如圖,梯子1,2,3明明都是空的,但後上梯子的猴子還是只選擇梯子0.實際觀察會發現,在等待梯子1上所有猴子過河的過程中,吞吐率會有比較大的下降。(gui上顯式的是實時吞吐率)

思考之後我發現,可能是因為這些猴子在生成後,立刻進行選擇梯子的操作,當時梯子0的指標比較優越,就導致這一批猴子全部選中了梯子0.而由於猴子生成和過河之間隔了較長的一段時間,導致等到這批猴子過河的時候全部集中選擇梯子0.

很明顯,這不是我們想要的結果。為了提高吞吐率,我們希望猴子盡可能均勻地分布在所有梯子上。由此,我在上述方案的基礎上進行了改進。在每個猴子選中乙個梯子後,將其新增到該梯子的等待列表上,在其在梯子上前進一次之後,將其從梯子的等待列表移除。而在選擇梯子時,若要選中乙個梯子,需要滿足一下三個條件:

改進的方案能夠比改進前的方案取得更高的吞吐率

哈工大軟體構造實驗lab6

3.1 adt設計方案 設計了哪些adt 各自的作用 屬性 方法 給出每個adt的specification 可選 以類圖形式給出多個類之間的關係。梯子類 public class ladder public vectorgenerator int t,int k,int mv,int h 猴子產生...

(軟體構造)lab6遇到的問題以及相應的解決

程式設計前一定要先分析好問題 該選取什麼樣的資料結構,資料結構應該具有怎樣的型別 怎樣的許可權?不要上手就一頓操作猛如虎,一看傷害零點五。該實驗中,乙個猴子是乙個執行緒,而n架梯子是所有猴子共享的。所以梯子就定義為monkey類的靜態成員 private final static listladde...

Lab6 程序的排程

從就緒佇列中挑選下乙個占用cpu執行的程序,從多個可用cpu中挑選就緒程序可使用的cpu資源 比較排程演算法的準則 吞吐量與延遲 低延遲 喝水的時候想要一開啟水龍頭水就流出來 高頻寬 給游泳池充水時希望從水龍頭裡同時流出大量的水,並且不介意是否存在延遲 減少響應時間 減少平均響應時間的波動 增加吞吐...