lru是least recently used的縮寫,即最近最少使用,常用於頁面置換演算法,是為虛擬頁式儲存管理服務的。
簡單說就是快取最近最常使用的服務或物件。
先來個很爛的草圖(但能說明問題)
這個是整體的特效載入優化的流程圖。主要就是對池子的操作,快取起最近最常使用的特效。
using system;
using system.collections.generic;
using unityengine;
public class lruwhere t : unityengine.object
}public lis***atas
}public lru(uint limitnum = 30)
/// /// 獲取乙個資料,注意,函式內不會新增資料,只能通過如果返回為null則adddata增加
///
///
///
public t getdata(string data)
if (data.compareto(ldata.name) == 0)
}return rdata;
}/// /// 新增乙個資料
///
///
public void addandsortdata(t data)
}else
sortdata();
}/// /// 重新排序或去除元素,使用物件得時候呼叫
///
private void sortdata()
for (int i = mdatas.count - 1; i >= 0; i--)
mdatas.removeat(i);}}
}}
在用在特效的物件池身上,這樣就可以更大概率的保證命中率了。特別是用在moba,rpg這些遊戲。因為我們主角可能換的概率不大,那麼快取起來不銷毀這些特效的話,那麼下次進來就不需要再載入一遍。命中率比普通載入方式高很多。 android 快取管理及LRU演算法
1 為什麼要用快取 快取是訪問資料的臨時地,因為取原始資料代價太大了,加了快取,可以取得快些。快取可以認為是原始資料的子集,它是從原始資料裡複製出來的,並且為了能被取回,被加上了標誌。在android開發中,經常要訪問網路資料比如大量網路,如果每次需要同一張都去網路獲取,這代價顯然太大了。可以考慮設...
android 快取管理及LRU演算法
1 為什麼要用快取 快取是訪問資料的臨時地,因為取原始資料代價太大了,加了快取,可以取得快些。快取可以認為是原始資料的子集,它是從原始資料裡複製出來的,並且為了能被取回,被加上了標誌。在android開發中,經常要訪問網路資料比如大量網路,如果每次需要同一張都去網路獲取,這代價顯然太大了。可以考慮設...
android 快取管理及LRU演算法
1 為什麼要用快取 快取是訪問資料的臨時地,因為取原始資料代價太大了,加了快取,可以取得快些。快取可以認為是原始資料的子集,它是從原始資料裡複製出來的,並且為了能被取回,被加上了標誌。在android開發中,經常要訪問網路資料比如大量網路,如果每次需要同一張都去網路獲取,這代價顯然太大了。可以考慮設...