??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美日韩直播,老色批av在线精品,欧美日韩亚洲一区二http://www.shnenglu.com/converse/category/6498.html感兴领?高性能服务器编E?法,Linux内核zh-cnMon, 21 Sep 2009 16:37:30 GMTMon, 21 Sep 2009 16:37:30 GMT60commoncache与tokyocabinet插入数据的效率比?/title><link>http://www.shnenglu.com/converse/archive/2009/09/20/96793.html</link><dc:creator>那谁</dc:creator><author>那谁</author><pubDate>Sun, 20 Sep 2009 12:02:00 GMT</pubDate><guid>http://www.shnenglu.com/converse/archive/2009/09/20/96793.html</guid><wfw:comment>http://www.shnenglu.com/converse/comments/96793.html</wfw:comment><comments>http://www.shnenglu.com/converse/archive/2009/09/20/96793.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/converse/comments/commentRss/96793.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/converse/services/trackbacks/96793.html</trackback:ping><description><![CDATA[最qtokyocabinetq个数据库很行Q网上出现很多研I这个玩意儿的文章。在它的<a >主页</a>上,l出?a >benchmark</a>表明Q在它的g环境下,插入一百万数据仅需不到一U的旉?br><br>我被震撼了,Z亲眼所见,也ؓ(f)了和我之前写?a href="http://www.shnenglu.com/converse/category/6498.html">commoncache</a>库进行比较,我决定在我自q机器上,使用同样cdQ大的数据Q同L(fng)量Q进行插入数据这个操作的比较?br><br>下面l出我写的测试文Ӟ(x)<br>针对tokyocabinet的:(x)<br>test_unfix_cache.c<br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">/*</span><span style="color: #008000;">*******************************************************************<br><br>    created:    2008/05/30<br><br>    filename:     test_unfix_cache.c<br><br>    author:        Lichuang<br><br>                <br><br>    purpose:    <br><br>********************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br><br><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">stdlib.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">errno.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">unistd.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">fcntl.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">sys</span><span style="color: #000000;">/</span><span style="color: #000000;">types.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">sys</span><span style="color: #000000;">/</span><span style="color: #000000;">wait.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">netinet</span><span style="color: #000000;">/</span><span style="color: #0000ff;">in</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">signal.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">arpa</span><span style="color: #000000;">/</span><span style="color: #000000;">inet.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">tcutil.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">tchdb.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br><br><br>TCHDB </span><span style="color: #000000;">*</span><span style="color: #000000;">hdb </span><span style="color: #000000;">=</span><span style="color: #000000;"> NULL;<br><br><br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> mainloop();<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> createrandstring(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> len);<br><br><br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> isparent </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br><br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main()<br><br>{<br><br>    hdb </span><span style="color: #000000;">=</span><span style="color: #000000;"> tchdbnew();<br><br>    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">hdb)<br><br>    {<br><br>        printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">create error!\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br><br>        exit(</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br><br>    }<br><br><br><br>    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">tchdbopen(hdb, </span><span style="color: #000000;">"</span><span style="color: #000000;">1.hdb</span><span style="color: #000000;">"</span><span style="color: #000000;">, HDBOWRITER </span><span style="color: #000000;">|</span><span style="color: #000000;"> HDBOCREAT))<br><br>    {<br><br>        printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">open error!\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br><br>        exit(</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br><br>    }<br><br><br><br>    mainloop();<br><br><br><br>    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>}<br><br><br><br></span><span style="color: #0000ff;">#define</span><span style="color: #000000;"> STRING_LEN 5</span><span style="color: #000000;"><br><br><br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> mainloop()<br><br>{<br><br>    </span><span style="color: #0000ff;">char</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;">[STRING_LEN];<br><br>    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> num, i, len;<br><br><br><br>    srand((unsigned)time(NULL) </span><span style="color: #000000;">+</span><span style="color: #000000;"> getpid());<br><br>    len </span><span style="color: #000000;">=</span><span style="color: #000000;"> STRING_LEN;<br><br><br><br>    </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">; i </span><span style="color: #000000;"><</span><span style="color: #000000;"> </span><span style="color: #000000;">1000000</span><span style="color: #000000;">; </span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br><br>    {<br><br>        memset(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #000000;">0</span><span style="color: #000000;">, STRING_LEN);<br><br>        createrandstring(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">, len);<br><br><br><br>        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">tchdbput2(hdb, </span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #0000ff;">string</span><span style="color: #000000;">))            <br><br>        {<br><br>        }<br><br>        </span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br><br>        {<br><br>        }<br><br>    }<br><br><br><br>    printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">pid = %d, test done\n</span><span style="color: #000000;">"</span><span style="color: #000000;">, getpid());<br><br>}<br><br><br><br></span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">char</span><span style="color: #000000;"> str[] </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br><br><br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> createrandstring(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> len)<br><br>{<br><br>    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> x, i;<br><br>    </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;"><</span><span style="color: #000000;"> len </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">; </span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br><br>    {<br><br>        x </span><span style="color: #000000;">=</span><span style="color: #000000;"> rand() </span><span style="color: #000000;">%</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(str) </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">);  <br><br>        </span><span style="color: #008000;">//</span><span style="color: #008000;">x = (i + len) % (sizeof(str) - 1);  </span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>        <br><br>        </span><span style="color: #0000ff;">string</span><span style="color: #000000;">[i] </span><span style="color: #000000;">=</span><span style="color: #000000;"> str[x];<br><br>    }<br><br><br><br>    </span><span style="color: #0000ff;">string</span><span style="color: #000000;">[</span><span style="color: #000000;">++</span><span style="color: #000000;">i] </span><span style="color: #000000;">=</span><span style="color: #000000;"> str[len </span><span style="color: #000000;">%</span><span style="color: #000000;"> </span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(str) </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">];<br><br>    </span><span style="color: #0000ff;">string</span><span style="color: #000000;">[i] </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">'</span><span style="color: #000000;">\0</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br><br>}<br><br><br></span></div> 对应的MakefileQ?br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">all:test_unfix_cache.c<br>    gcc </span><span style="color: #000000;">-</span><span style="color: #000000;">I</span><span style="color: #000000;">/</span><span style="color: #000000;">usr</span><span style="color: #000000;">/</span><span style="color: #000000;">local</span><span style="color: #000000;">/</span><span style="color: #000000;">include test_unfix_cache.c </span><span style="color: #000000;">-</span><span style="color: #000000;">o test_unfix_cache  </span><span style="color: #000000;">-</span><span style="color: #000000;">L</span><span style="color: #000000;">/</span><span style="color: #000000;">usr</span><span style="color: #000000;">/</span><span style="color: #000000;">local</span><span style="color: #000000;">/</span><span style="color: #000000;">lib </span><span style="color: #000000;">-</span><span style="color: #000000;">ltokyocabinet </span><span style="color: #000000;">-</span><span style="color: #000000;">lz </span><span style="color: #000000;">-</span><span style="color: #000000;">lbz2 </span><span style="color: #000000;">-</span><span style="color: #000000;">lrt </span><span style="color: #000000;">-</span><span style="color: #000000;">lpthread </span><span style="color: #000000;">-</span><span style="color: #000000;">lm </span><span style="color: #000000;">-</span><span style="color: #000000;">lc<br></span></div> <br>而针对commoncache的测试文件是Q?br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">/*</span><span style="color: #008000;">*******************************************************************<br>    created:    2008/05/30<br>    filename:     test_unfix_cache.c<br>    author:        Lichuang<br>                <br>    purpose:    <br>********************************************************************</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">stdlib.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">stdio.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">errno.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">unistd.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">fcntl.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">sys</span><span style="color: #000000;">/</span><span style="color: #000000;">types.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">sys</span><span style="color: #000000;">/</span><span style="color: #000000;">wait.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">netinet</span><span style="color: #000000;">/</span><span style="color: #0000ff;">in</span><span style="color: #000000;">.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">signal.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br>#include </span><span style="color: #000000;"><</span><span style="color: #000000;">arpa</span><span style="color: #000000;">/</span><span style="color: #000000;">inet.h</span><span style="color: #000000;">></span><span style="color: #000000;"><br><br>#include </span><span style="color: #000000;">"</span><span style="color: #000000;">ccache.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>#include </span><span style="color: #000000;">"</span><span style="color: #000000;">memory.h</span><span style="color: #000000;">"</span><span style="color: #000000;"><br><br>ccache_t</span><span style="color: #000000;">*</span><span style="color: #000000;"> cache;<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> mainloop();<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> createrandstring(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> len);<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> isparent </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main()<br>{<br>    cache </span><span style="color: #000000;">=</span><span style="color: #000000;"> ccache_create(</span><span style="color: #000000;">75000</span><span style="color: #000000;">, </span><span style="color: #000000;">100</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">./testunfixmap</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">10</span><span style="color: #000000;">, </span><span style="color: #000000;">810</span><span style="color: #000000;">, </span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (NULL </span><span style="color: #000000;">==</span><span style="color: #000000;"> cache)<br>    {<br>        printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">create_cache error!\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>        </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>    }<br><br>    mainloop();<br><br>    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br><br></span><span style="color: #0000ff;">#define</span><span style="color: #000000;"> STRING_LEN 5</span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> cmp_fun(</span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;">*</span><span style="color: #000000;"> data1, </span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;">*</span><span style="color: #000000;"> data2, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> len)<br>{<br>    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> memcmp(data1, data2, </span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">) </span><span style="color: #000000;">*</span><span style="color: #000000;"> len);<br>}<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> mainloop()<br>{<br>    </span><span style="color: #0000ff;">char</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;">[STRING_LEN];<br>    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> i, len;<br>    ccache_data_t data;<br><br>    srand((unsigned)time(NULL) </span><span style="color: #000000;">+</span><span style="color: #000000;"> getpid());<br>    len </span><span style="color: #000000;">=</span><span style="color: #000000;"> STRING_LEN;<br><br>    </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">; i </span><span style="color: #000000;"><</span><span style="color: #000000;"> </span><span style="color: #000000;">1000000</span><span style="color: #000000;">; </span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br>    {<br>        memset(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #000000;">0</span><span style="color: #000000;">, STRING_LEN);<br>        createrandstring(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">, len);<br><br>        data.datasize </span><span style="color: #000000;">=</span><span style="color: #000000;"> len;<br>        data.keysize </span><span style="color: #000000;">=</span><span style="color: #000000;"> len;<br>        data.data </span><span style="color: #000000;">=</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">void</span><span style="color: #000000;">*</span><span style="color: #000000;">)</span><span style="color: #000000;">&</span><span style="color: #0000ff;">string</span><span style="color: #000000;">;<br>        data.key  </span><span style="color: #000000;">=</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">void</span><span style="color: #000000;">*</span><span style="color: #000000;">)</span><span style="color: #000000;">&</span><span style="color: #0000ff;">string</span><span style="color: #000000;">;<br><br>        </span><span style="color: #008000;">//</span><span style="color: #008000;">printf("i = %d\n", i);</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">0</span><span style="color: #000000;"> </span><span style="color: #000000;">></span><span style="color: #000000;"> ccache_insert(</span><span style="color: #000000;">&</span><span style="color: #000000;">data, cache, cmp_fun, NULL, NULL))<br>        {<br>        }<br>        </span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>        {<br>            </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br>        }<br>    }<br><br>    printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">pid = %d, test done\n</span><span style="color: #000000;">"</span><span style="color: #000000;">, getpid());<br>}<br><br></span><span style="color: #0000ff;">const</span><span style="color: #000000;"> </span><span style="color: #0000ff;">char</span><span style="color: #000000;"> str[] </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br><br></span><span style="color: #0000ff;">void</span><span style="color: #000000;"> createrandstring(</span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> len)<br>{<br>    </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> x, i;<br>    </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;"><</span><span style="color: #000000;"> len </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">; </span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br>    {<br>        x </span><span style="color: #000000;">=</span><span style="color: #000000;"> rand() </span><span style="color: #000000;">%</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(str) </span><span style="color: #000000;">-</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">);  <br>        </span><span style="color: #008000;">//</span><span style="color: #008000;">x = (i + len) % (sizeof(str) - 1);  </span><span style="color: #008000;"><br></span><span style="color: #000000;">        <br>        </span><span style="color: #0000ff;">string</span><span style="color: #000000;">[i] </span><span style="color: #000000;">=</span><span style="color: #000000;"> str[x];<br>    }<br><br>    </span><span style="color: #0000ff;">string</span><span style="color: #000000;">[</span><span style="color: #000000;">++</span><span style="color: #000000;">i] </span><span style="color: #000000;">=</span><span style="color: #000000;"> str[len </span><span style="color: #000000;">%</span><span style="color: #000000;"> </span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(str) </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">];<br>    </span><span style="color: #0000ff;">string</span><span style="color: #000000;">[i] </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">'</span><span style="color: #000000;">\0</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br>}<br><br></span></div> 在commoncache的项目代码的test目录中,同样存在一个名为test_unfix_test.c的文Ӟ是我以前写commoncache时测试用的,不过原来的那个文件功能较多,不仅有插入操作,q有查找Q替换等操作Q这ơؓ(f)了测试,我对q个文gq行了精Q只保留插入数据操作的部分。用的是commoncache中的hashQrbtreel构?br><br>性能试l果Q?br>tokyocabinetQ?br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">lichuang@lichuang:</span><span style="color: #000000;">/</span><span style="color: #000000;">media</span><span style="color: #000000;">/</span><span style="color: #000000;">e</span><span style="color: #000000;">/</span><span style="color: #000000;">source</span><span style="color: #000000;">/</span><span style="color: #000000;">tokyocabinet</span><span style="color: #000000;">/</span><span style="color: #000000;">test$ time .</span><span style="color: #000000;">/</span><span style="color: #000000;">test_unfix_cache <br>pid </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">15464</span><span style="color: #000000;">, test done<br><br>real    0m0.373s<br>user    0m0.364s<br>sys    0m0.008s<br></span></div> commoncacheQ?br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">lichuang@lichuang:</span><span style="color: #000000;">/</span><span style="color: #000000;">media</span><span style="color: #000000;">/</span><span style="color: #000000;">e</span><span style="color: #000000;">/</span><span style="color: #000000;">source</span><span style="color: #000000;">/</span><span style="color: #000000;">ccache</span><span style="color: #000000;">/</span><span style="color: #000000;">bin$ time .</span><span style="color: #000000;">/</span><span style="color: #000000;">test_unfix_cache <br>pid </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">15514</span><span style="color: #000000;">, test done<br><br>real    0m0.235s<br>user    0m0.228s<br>sys    0m0.004s<br></span></div> 看上来,commoncache比之tokyocabinetq稍好一些?<br>不过Qcommoncache与tokyocabinetq是有区别的Q前者工作的区域是共享内存,后者是盘文gQ有q样的表玎ͼ实惊h?br><br>q次比较Qv码给了我一些些的自信,我的commoncache不比世界一的文g数据库性能差的太多?br>下一步,我想l箋下面的几个工作:(x)<br>1Q?国庆的时候,整理Z份commoncache的设计文,是阶段性的一个小l。另外,commoncache在插入数据的时候,有时?x)报错,我还得查查是Z么?br>2Q?抽空要开始研I文件数据库的实CQtokyocabinet是一个不错的参考?br><br>另外Q多说几句,一个品要成功Q仅仅有性能是不够,可维护性,可备份性,优秀的协议设计等{,都是重要的指标。我惻Icommoncache只做C性能q一点,我需要在其他几方面l努力?br><br>哦,忘了l出我的环境参数Q?br>ubuntu9.04,内核2.6.18,内存3GQintel 双核CPU?br><br><br> <img src ="http://www.shnenglu.com/converse/aggbug/96793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/converse/" target="_blank">那谁</a> 2009-09-20 20:02 <a href="http://www.shnenglu.com/converse/archive/2009/09/20/96793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ccache发布0.5版本http://www.shnenglu.com/converse/archive/2008/11/14/66929.html那谁那谁Fri, 14 Nov 2008 08:54:00 GMThttp://www.shnenglu.com/converse/archive/2008/11/14/66929.htmlhttp://www.shnenglu.com/converse/comments/66929.htmlhttp://www.shnenglu.com/converse/archive/2008/11/14/66929.html#Feedback5http://www.shnenglu.com/converse/comments/commentRss/66929.htmlhttp://www.shnenglu.com/converse/services/trackbacks/66929.html阅读全文

那谁 2008-11-14 16:54 发表评论
]]>
ccache发布0.4版本http://www.shnenglu.com/converse/archive/2008/10/31/65656.html那谁那谁Fri, 31 Oct 2008 15:59:00 GMThttp://www.shnenglu.com/converse/archive/2008/10/31/65656.htmlhttp://www.shnenglu.com/converse/comments/65656.htmlhttp://www.shnenglu.com/converse/archive/2008/10/31/65656.html#Feedback3http://www.shnenglu.com/converse/comments/commentRss/65656.htmlhttp://www.shnenglu.com/converse/services/trackbacks/65656.html阅读全文

那谁 2008-10-31 23:59 发表评论
]]>
ccache发布0.3版本http://www.shnenglu.com/converse/archive/2008/08/07/58253.html那谁那谁Thu, 07 Aug 2008 09:27:00 GMThttp://www.shnenglu.com/converse/archive/2008/08/07/58253.htmlhttp://www.shnenglu.com/converse/comments/58253.htmlhttp://www.shnenglu.com/converse/archive/2008/08/07/58253.html#Feedback2http://www.shnenglu.com/converse/comments/commentRss/58253.htmlhttp://www.shnenglu.com/converse/services/trackbacks/58253.html阅读全文

那谁 2008-08-07 17:27 发表评论
]]>
ccache发布0.2版本http://www.shnenglu.com/converse/archive/2008/04/02/46016.html那谁那谁Wed, 02 Apr 2008 04:00:00 GMThttp://www.shnenglu.com/converse/archive/2008/04/02/46016.htmlhttp://www.shnenglu.com/converse/comments/46016.htmlhttp://www.shnenglu.com/converse/archive/2008/04/02/46016.html#Feedback1http://www.shnenglu.com/converse/comments/commentRss/46016.htmlhttp://www.shnenglu.com/converse/services/trackbacks/46016.html阅读全文

那谁 2008-04-02 12:00 发表评论
]]>
发布我的开源cache库ccachehttp://www.shnenglu.com/converse/archive/2008/03/24/45236.html那谁那谁Mon, 24 Mar 2008 03:20:00 GMThttp://www.shnenglu.com/converse/archive/2008/03/24/45236.htmlhttp://www.shnenglu.com/converse/comments/45236.htmlhttp://www.shnenglu.com/converse/archive/2008/03/24/45236.html#Feedback8http://www.shnenglu.com/converse/comments/commentRss/45236.htmlhttp://www.shnenglu.com/converse/services/trackbacks/45236.html阅读全文

那谁 2008-03-24 11:20 发表评论
]]>
һۺϾþ| պһþ | þһձɫۺϾþ| ղƷþþþþþ| 91ƷѾþþþþþþ| Ʒŷһþþ| þþþþþƷþþþ| ݺ޾þþþþۺ| Ʒþþþþ³| þۺϾƷһ| þseƷһƷ| þþƷһ| Ʒþþþ| þۺϾƷþ| þƬѹۿ| ھƷþþþav| þòþüƵ7| þҹۺϾþ| պŷۺϾþӰԺd3| þùƷһ| պþëƬ| ŷþһwwwwww.| 99þù뾫Ʒ| 鶹avþavʢav| þþƷ޾Ʒ| þþþþҹƷ| 뾫Ʒþþþ..| Ʒþù鶹99վ| þó鱬Ļ| ƷһþaaaƬ| Ժձһձþ| ëƬŷëƬþþ | Ʒþþþþ12 | þþþavרˮ | þþƷһ| þþƷһapp| ƷžžþþƷŮͬŷպۺ | þþþþëƬѲ| һɫþ88ۺ޾Ʒ| ƷþþþóѶ| þҹɫƷav|