高級的Android線(xiàn)程性能(néng)優化
使用(yòng)Snapdragon Spaces Unity包創建的項目可(kě)以将線(xiàn)程注冊到Snapdragon Spaces服務(wù),從而提高在Android平台上的調度優先級。
正确設置線(xiàn)程優先級有(yǒu)助于穩定和快速地渲染幀,從而改善增強現實(XR)體(tǐ)驗。
Snapdragon Spaces Unity插件默認會自動識别Unity主線(xiàn)程和渲染線(xiàn)程,并将它們注冊到Snapdragon Spaces服務(wù),開發者無需額外操作(zuò)。
SpacesThreadUtility類提供了一個方法供開發者使用(yòng):public static void SetThreadHint(SpacesThreadType threadType),用(yòng)于标識其他(tā)由開發者創建的線(xiàn)程。
為(wèi)了獲得最佳效果,這個方法必須在應該注冊的線(xiàn)程中(zhōng)盡早調用(yòng)。
具(jù)體(tǐ)定義了四種線(xiàn)程類型:
● SPACES_THREAD_TYPE_APPLICATION_MAIN
● SPACES_THREAD_TYPE_APPLICATION_WORKER
● SPACES_THREAD_TYPE_RENDERER_MAIN
● SPACES_THREAD_TYPE_RENDERER_WORKER
分(fēn)配給前三種線(xiàn)程類型
(SPACES_THREAD_TYPE_APPLICATION_MAIN、SPACES_THREAD_TYPE_APPLICATION_WORKER、SPACES_THREAD_TYPE_RENDERER_MAIN)目前對調度優先級沒有(yǒu)影響。
而分(fēn)配給SPACES_THREAD_TYPE_RENDERER_WORKER類型的線(xiàn)程将獲得比其他(tā)線(xiàn)程更高的調度優先級。
在實際使用(yòng)中(zhōng),這些線(xiàn)程會較少地讓出CPU時間片,并更多(duō)地用(yòng)于執行代碼。
開發者在使用(yòng)此功能(néng)時應謹慎行事。建議他(tā)們自行測試标識線(xiàn)程的性能(néng)變化。
向Snapdragon Spaces服務(wù)注冊線(xiàn)程會帶來一定的額外開銷,因此對于生命周期非常短的線(xiàn)程可(kě)能(néng)不适合使用(yòng)。
将非渲染線(xiàn)程标識為(wèi)SPACES_THREAD_TYPE_RENDERER_WORKER可(kě)能(néng)會對XR體(tǐ)驗造成負面影響,因為(wèi)這可(kě)能(néng)會減少渲染線(xiàn)程的優先級,導緻幀率下降、延遲增加、穩定性降低等問題。