注意:本文是一个存根。稍会将发布有关不同的简单缓存实现的更详细分析。请参阅下面的注解获得大致的摘要。 以下是一个简单的缓存实现,适用于相对较小的缓存(最多几百个项目),并且在缓存未命中(例如每个对象几毫秒或更多)后创建或重新加载对象的成本相对较高。 简单缓存实现
_________________________________________________________________________________________________________________ 注释: (100k访问,100时隙,500项,10ms对象 创建,每个对象1k,整数键) 基线:速度= 1000s(0 1000)内存= 0k memoization: speed=5.22s (0.22 5.00) memory=500k keep last: speed=989.86s (0.72 989.14) memory=1k clear all: speed=532.51s (0.55 531.96) memory=100k clear pop: speed=706.51s (0.76 705.75) memory=100k clear random: speed=400.61s (0.80 399.81) memory=100k clear lru: speed=317.05s (0.78 316.27) memory=100k 替代实现: carlson: speed=320.22s (1.35 318.87) memory=100k prodromou: speed=343.61s (17.88 325.73) memory=100k http://freshmeat.net/projects/lrucache/ carlson 的实现方式是使用手动维护的双 - 链表,复杂度是O(1),对于较小的缓存比列表慢。 prodromou 的实现使用一个排序堆缓存项目,结果是慢得多。 英文原文:http://effbot.org/zone/caching.htm |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|