Screeps 中優(yōu)化 Memory 儲存

問題

在 Screeps 中,Memory 是很重要的存在,它讓信息可以在Tick與Tick之間保存狀態(tài)。但是每個Tick對Memory的第一次引用都會觸發(fā)Memory的反序列化,我們來看一下官方原文。


可見,每次都進(jìn)行反序列化,對CPU的開銷是比較大的,官方也告訴我們,實際上使用RawMemory是一種更好的方式,但這需要我們自己去進(jìn)行設(shè)定,并且這對很多人來說很難。

但接下來的方案您可以參考一下,在繼續(xù)說之前我需要問自己幾個問題。

注意:Memroy存在的意義是什么?

它讓信息可以在Tick與Tick之間保存狀態(tài)

注意:還有什么可以跨Tick之間保存狀態(tài)?

沒錯,global,但是global會定時清空 這個問題在之后會得到解決

那么,我們只需要讓 RawMemory 做到Tick與Tick之間保持狀態(tài)就可以了,我們并不需要再去寫一個RawMemory序列/反序列模塊。

But, How?

  1. 我們讓序列化的數(shù)據(jù),保存在 RawMemory0 (以下簡稱Raw0)中
  2. 讓global儲存我們的反序列化數(shù)據(jù),并建立Proxy監(jiān)聽
  3. 在Raw1(以下簡稱Cache)中記錄好每個tick對global的更改,當(dāng)變化時,寫入到Cache
  4. 每當(dāng)global清空時,立即從Raw0反序列化數(shù)據(jù),通過合并Cache中的修改來還原數(shù)據(jù)的最后狀態(tài)并恢復(fù)數(shù)據(jù)到global


如此一來,Cache中只會儲存被經(jīng)常修改的數(shù)據(jù),例如狀態(tài)機(jī)、坐標(biāo)位置、尋路緩存等小量動態(tài)數(shù)據(jù),這部分?jǐn)?shù)據(jù)只有在Proxy監(jiān)聽到修改時會得到序列化與反序列化的同步更新,耗時取決于在一個global周期你做了多少事情;Raw0中的數(shù)據(jù)通常多的是大量靜態(tài)數(shù)據(jù),這部分?jǐn)?shù)據(jù)的序列化與反序列化頻率只取決于global被清空的頻率。

Absolutely,我們在對每個Tick的修改進(jìn)行監(jiān)聽時使用到了Proxy,您當(dāng)然可以在Proxy中實現(xiàn)更加優(yōu)美的反序列化邏輯。

Absolutely2,您可以在Raw0與Cache(Raw1)合并時加入Raw2,Raw3等,來擴(kuò)容或者分類,并設(shè)置他們的合并邏輯。

關(guān)于global掛載這里有仙術(shù),可以參考
http://www.itdecent.cn/p/c6413d67893b

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 面試必背 會舍棄、總結(jié)概括——根據(jù)我這些年面試和看面試題搜集過來的知識點(diǎn)匯總而來 建議根據(jù)我的寫的面試應(yīng)對思路中的...
    luoyangzk閱讀 7,168評論 6 173
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • multiprocessing --- 基于進(jìn)程的并行源代碼 Lib/multiprocessing/ 概述mul...
    青月教主閱讀 659評論 0 0
  • Django知識點(diǎn)概述 Web應(yīng)用 問題1:描述一個Web應(yīng)用的工作流程。 問題2:描述項目的物理架構(gòu)。(上圖中補(bǔ)...
    領(lǐng)帶襯有黃金閱讀 812評論 0 1
  • 入門與進(jìn)階 第一章 進(jìn)入編程 1,如何快速運(yùn)行一段js代碼? 方式1:瀏覽器開發(fā)者工具??梢允褂每旖萱Ioption...
    瀟瀟瀟瀟瀟瀟瀟閱讀 934評論 0 0

友情鏈接更多精彩內(nèi)容