免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: converse
打印 上一主题 下一主题

[算法] 发布我的开源cache库ccache [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-04-01 10:04 |只看该作者

回复 #9 iunknown 的帖子

是的 我的blog上也有人是这么建议的 今后的版本决定这么做了 以前没有这方面的经验.

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
12 [报告]
发表于 2008-04-01 11:04 |只看该作者
下不动啊。。资源是 0/1。。

版主的博客在哪啊,想拜读。

另外能把你的cache发给我一份么?感激

[ 本帖最后由 yangsf5 于 2009-1-5 13:03 编辑 ]

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
13 [报告]
发表于 2008-04-01 11:19 |只看该作者
挂迅雷挂了20分钟。。。终于下来了。。。

论坛徽章:
0
14 [报告]
发表于 2008-04-01 11:26 |只看该作者
mark一个
感觉做web应用比较适合

论坛徽章:
0
15 [报告]
发表于 2008-04-01 12:33 |只看该作者
学习下。

论坛徽章:
0
16 [报告]
发表于 2008-04-01 12:52 |只看该作者
能改个名字吗? 冲突了:

rpm -qi ccache
Name        : ccache                       Relocations: (not relocatable)
Version     : 2.4                               Vendor: Fedora Project
Release     : 11.fc8                        Build Date: 2007年10月03日 星期三 00时53分56秒
Install Date: 2008年04月01日 星期二 12时48分33秒      Build Host: xenbuilder2.fedora.redhat.com
Group       : Development/Tools             Source RPM: ccache-2.4-11.fc8.src.rpm
Size        : 86820                            License: GPLv2+
Signature   : DSA/SHA1, 2007年10月25日 星期四 08时41分28秒, Key ID b44269d04f2a6fd2
Packager    : Fedora Project
URL         : http://ccache.samba.org/
Summary     : C/C++ compiler cache
Description :
ccache is a compiler cache.  It acts as a caching pre-processor to
C/C++ compilers, using the -E compiler switch and a hash to detect
when a compilation can be satisfied from cache.  This often results in
a 5 to 10 times speedup in common compilations.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
17 [报告]
发表于 2008-04-01 12:53 |只看该作者
lcache

论坛徽章:
0
18 [报告]
发表于 2008-04-02 11:51 |只看该作者
发布0.2版本,主要改动:

0.2版本:
cmpfun函数指针去掉了size参数, 因为我认为这个参数应该由使用该cache的用户去关心,见test/testcache.c中的示例代码
加入两个api:update_or_insert_data和visit_cache
同时还有unlock_cache api,因为某些使用C++的用户如果使用了C++的异常处理,在调用ccache中的API时抛出异常将导致ccache没有解锁
, 以后就不能再使用了, 提供这个API是为了在抛出异常的时候用户自己释放锁

另外,这个版本还修正了原来的两个低级错误:第一个是在ccache.h中加入了对__cplusplus宏的处理,如果不加入这个宏的处理,那么如果用gcc编译了
ccache,而用g++编译链接生成的静态库将导致链接错误;第二个将makefile中的
testcache:test/testcache.c $(OBJS)
        $(CC) -o $(TESTCACHE) $(OBJS) $(TESTDIR)/*.c -L$(LIB_DIR) -l$(LIBNAME) $(CFLAGS) $(INCLUDE) -lpthread
改成了:
testcache:test/testcache.c $(LIB)
    $(CC) -o $(TESTCACHE) $(TESTDIR)/*.c -L$(LIB_DIR) -l$(LIBNAME) $(CFLAGS) $(INCLUDE) -lpthread

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
19 [报告]
发表于 2008-04-02 20:19 |只看该作者
  1.     while (0 <= index)

  2.     {

  3.         node = NODE(cache, index);

  4.         nodekey = NODE_KEY(node);



  5.         if (!cmp(key, nodekey))

  6.         {

  7.             break;

  8.         }



  9.         index = node->next;

  10.     }
复制代码

版主的这个找节点是用遍历链表的阿?
我要维护一个1.5w节点的cache,这样会降低效率么?

如果设计成哈希表那样的,可以直接由数据的key找到对应节点的。。。但又会解决哈希冲突的开销和映射。。。

两种效率怎么取舍阿?

论坛徽章:
0
20 [报告]
发表于 2008-04-02 21:59 |只看该作者

回复 #19 yangsf5 的帖子

你没有看完这个代码,是采用HASH-LIST的复合数据结构.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP