看板 Minecraft 關於我們 聯絡資訊
恩恩 這兩天研究了一下Minecraft程式到底瓶頸在哪裡。 因為那個Java Flight Recorder是有把程式運行的時候紀錄細節下來啦。 可是我開程式要分析紀錄檔時一直凍結,卡在那裡不執行。 所以我換個方法,改成用VisualVM。 也是一個分析的工具,從名字可以猜到, 是個可以把Java程式運行時的細節,圖形化視覺化表現出來的工具程式。 然後就邊開邊逛Minecraft的世界。 故意找那種地形還沒畫出來的地方逛。 這時VisualVM的顯示大概是這樣。 https://i.imgur.com/UoFI5bj.png
大家可以看到左上角是Minecraft在運行的視窗,背景則是VisualVM剖析的圖。 我把VisualVM切換到顯示每一條thread執行的概略狀況。 請大家注意我有打勾的幾個條目, Server thread還有Chunk Batcher0 ~ Chunk Batcher3, 長條圖中綠色條塊的意思是執行的時間 這5個thread在我逛Minecraft時遇到還沒有畫出地形的時候會有反應 只要有還沒有畫的地方Server thread的執行時間會先飆高, 你可以看到Server thread瘋狂的在運算。 接下來會是Chunk Batcher0 ~ Chunk Batcher3執行時間會飆高, 但是綠色條塊看來游刃有餘,因為跑一下就算完了。 我的電腦是雙核心的,開了Hyper-threading對軟體來說可以同時有4個threads在計算。 從Chunk Batcher有4個可以假設, Minecraft會依你的電腦可以同時執行幾條threads去產生Chunk Batcher的數目。 Chunk Batcher,名字取得蠻有趣的, batcher是這個玩意, https://i.imgur.com/PzfFicV.jpg
卡車可以停在下面,用來從漏斗中放出定量的東西到卡車上。 大概可以翻譯成chunk的計量分配器。 看字面我猜意思是把Chunk分配給別的東西去運算。 但是看起來好像是實際在算地形的threads。 因為Chunk Batcher都一下就跑完了,所以瓶頸是在Server thread。 這是我目前為止的結論。 至於詳細的運算繁重的程式碼部份,我還在讀程式碼,一個段落後再跟大家介紹。 大概4這樣。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.172.86 ※ 文章網址: https://www.ptt.cc/bbs/Minecraft/M.1514549908.A.4AF.html ※ 編輯: kuangjc5566 (118.167.172.86), 12/29/2017 20:29:08
error405: 嗯其實已經有些像是optifine的提升效能MOD的說 12/29 20:37
LPH66: Optifine 好像主要是 client 端的效能提升的樣子? 12/29 22:22
ferretwind: 看起來很有趣 12/30 11:02
alanqq0624: 推 12/30 11:08
j6u47803: 讚! 12/30 12:08
NoyVaughty: optifog.blogspot.tw/ 這篇(舊)網誌分析了Minecraft 12/31 22:20
NoyVaughty: 為何顯示效能不彰 12/31 22:21