请问一下wwlhp

04-06-08 chinahero
我在这下载了你的上传的cache object,我去掉了后台线程的那块,用来和jcs做个比较,在100000次的方问下(查询的内容全在cache中),你的cache比jcs快一些,而在百万次的方问下,比jcs差远了,慢1倍,能不能分析一下原因是什么?

wwlhp@jdon
2004-06-09 14:00
你好,我的后台线程是采用LRU算法去除掉最近最不常用的对象,还有超时的对象,去掉了这一块可能不行吧。

chinahero
2004-06-10 21:33
代码里面已经是这样的啊,每个put的对象都有一个超时的属性,下次查询时发现对象超时了,就return null啊,实际上那个后台线程只不过是定时清空,不要应该没关系的吧

另外,你说的lru算法就是先进先出吗?好象代码很少啊,这样就是lru了啊?

chinahero
2004-06-10 21:33
是不是这个cache的实现一般都要有后台线程来进行cache 的维护呢?

wwlhp@jdon
2004-06-11 10:46
LRU算法应该是这样的,你有一个对象集合,每次访问一个对象,都给这个对象盖上当前的时间戳,删除对象时,时间戳最老的对象就是最近最少使用的对象。用时间戳太复杂了,所以我就想了一个简单的办法,用链式的列表,这样既方便插入和删除,同时对象在链表中的顺序就表示他们的时间戳的顺序。

后台线程非常重要,它负责删除超时的对象和LRU对象,如果没有后台线程,cache就会越来越大,而且充满了超时无用的对象,命中率自然会比较低了。

猜你喜欢
2Go 1 2 下一页