对象的通用缓存

Nic*_*las 12 c++ boost stl

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

  • 您使用键来查找对象(与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);

...
Run Code Online (Sandbox Code Playgroud)

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

欢迎任何建议!

尼克

jpi*_*912 -6

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

除了手动用户配置以避免分页机制(顺便说一句,正是为了提高性能)之外,大多数操作系统都会在磁盘上为您“缓存”内存......这是“分页”,一种“高成本缓存”的形式,因为没有任何东西会被丢弃,它是由特定的硬件(称为内存管理单元的子处理单元)完成的......

从整体上看,缓存代码会减慢进程,同时又是多余的。