对象的通用缓存

时间:2020-03-06 14:37:07  来源:igfitidea点击:

有谁知道对象模板缓存的任何实现?

  • 我们使用键来查找对象(与std :: map <>中的相同)
  • 我们指定可以同时在高速缓存中的最大对象数
  • 有一些工具可以创建在缓存中找不到的对象
  • 有一些工具可以知道何时从缓存中丢弃对象

例如 :

typedef cache<int, MyObj*> MyCache;
MyCache oCache;
oCache.SetSize(1);
oCache.Insert(make_pair(1, new MyObj());
oCache.Touch(1);
MyObj* oldObj = oCache.Delete(1);

...

它可以像LRU或者MRU缓存一样简单。

任何建议都欢迎!

尼克

解决方案

在一个应用程序中,我几乎无法想象,存储显然可以重新创建的对象会提高性能,从而提高性能(hip:因为当缓存达到顶部时,它们可以自动丢弃)。
sw缓存将需要通过关联性代码获取内存,这肯定会比内存分配和构造函数运行(主要是内存初始化)慢。

除了手动用户配置以避免分页机制(精确地提高性能,顺便说一句)之外,大多数操作系统都会在磁盘上为我们"缓存"内存...这是"分页",是"高成本缓存"的一种形式,没有东西被扔掉,由特定的硬件完成,这是一个称为"内存管理单元"的子处理单元。

从总体上看,缓存代码将在减慢过程的同时增加冗余。