|
这个主题共有 5 回复 / 1 页 [
]
|
|
|
|
|
|
请问一下wwlhp
|
发表: 2004年06月08日 21:58
|
回复
|
|
|
我在这下载了你的上传的cache object,我去掉了后台线程的那块,用来和jcs做个比较,在100000次的方问下(查询的内容全在cache中),你的cache比jcs快一些,而在百万次的方问下,比jcs差远了,慢1倍,能不能分析一下原因是什么?
|
|
|
|
|
|
Re: 请问一下wwlhp
|
发表: 2004年06月09日 14:00
|
回复
|
|
|
你好,我的后台线程是采用LRU算法去除掉最近最不常用的对象,还有超时的对象,去掉了这一块可能不行吧。
|
|
|
|
|
|
Re: 请问一下wwlhp
|
发表: 2004年06月10日 21:33
|
回复
|
|
代码里面已经是这样的啊,每个put的对象都有一个超时的属性,下次查询时发现对象超时了,就return null啊,实际上那个后台线程只不过是定时清空,不要应该没关系的吧
另外,你说的lru算法就是先进先出吗?好象代码很少啊,这样就是lru了啊?
|
|
|
|
|
|
Re: 请问一下wwlhp
|
发表: 2004年06月10日 21:33
|
回复
|
|
|
|
|
|
|
|
Re: 请问一下wwlhp
|
发表: 2004年06月11日 10:46
|
回复
|
|
LRU算法应该是这样的,你有一个对象集合,每次访问一个对象,都给这个对象盖上当前的时间戳,删除对象时,时间戳最老的对象就是最近最少使用的对象。用时间戳太复杂了,所以我就想了一个简单的办法,用链式的列表,这样既方便插入和删除,同时对象在链表中的顺序就表示他们的时间戳的顺序。
后台线程非常重要,它负责删除超时的对象和LRU对象,如果没有后台线程,cache就会越来越大,而且充满了超时无用的对象,命中率自然会比较低了。
|
|
|
|
|
|
Re: 请问一下wwlhp
|
发表: 2004年06月12日 10:54
|
回复
|
|
总觉的后台开个线程对性能有影响
:D ,谢谢
和jcs比过吗?谁的性能好
|
|
|
|