主要參考Unity Connect上面的文章,原文鏈接:
https://connect.unity.com/p/unityecs-yi
按照文章,是創建 100x100 的立方體,以噪聲作爲Y軸值,進行波浪動作。
測試環境
Unity 2019.4.2f1 (64-bit)
安裝最新的Package
測試結果
原始組件模式:15-16fps
ECS+JobSystem:60-70fps
ECS+JobSystem+Burst:120-180fps
本文轉自https://blog.csdn.net/cp790621656/article/details/107127880
ECS模式
ECS是一種設計思想,和Unity之前的Component設計模式一樣。並不限定在Unity中,任何語言都可以實現ECS模式。
Unity的ECS並不僅僅實現這種模式,在這之後做了CPU緩存優化,提升了CPU緩存填充率,從而命中率提高。
另一方面,使用Struct替代Class,以及Collections擴展包中提供大量Native容器,減少GC。
JobSystem
如果只有ECS,那麼並沒有想象中的那麼好,遊戲仍然以單線程運行,現代移動CPU核心多以10計,一直都是一核有難,9核圍觀。
JoySystem 就是將複雜的運算,分佈在不同的CPU核心中。
原始組件模式,在主線程Update更新Cube座標,其他線程閒置:
開啓JobSystem後,任務分配到多個CPU核心:
https://www.thisisgame.com.cn/
Burst編譯
Burst編譯器,將C#代碼轉爲LLVM中間語言IR代碼。然後由LLVM生成高度優化本機代碼。
Burst編譯器不支持C#中的數學操作,對此Unity提供了額外的Package Mathematics。
雨松在視頻直播中提到的一個點是支持了CPU的SIMD指令,將數學計算進行打包。一條彙編指令可以執行4個數學運算,極大降低了CPU佔用。所以可以看到開啓Burst之後,CPU相較於之前的80%降低到60%。遊戲人生
在Profile中也可以直觀看到,在一瞬間就完成了運算。
雨松的直播視頻:
https://www.bilibili.com/video/av711159137/
測試項目下載
鏈接:https://pan.baidu.com/s/1jaYUVo1D2uIGc4vFpF0Lsw
提取碼:4wj2
什麼項目用Dots?
具有大量相同類型運算的項目,例如RTS、SLG、我的世界類型方塊沙盒。
Dots這套解決方案,暫時只能對CPU進行優化,GPU方向期待Unity後續計劃。
Burst目前還是Preview,正式項目中使用可能會有很多坑,工期趕得話不建議使用。