青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

那誰的技術(shù)博客

感興趣領(lǐng)域:高性能服務(wù)器編程,存儲(chǔ),算法,Linux內(nèi)核
隨筆 - 210, 文章 - 0, 評(píng)論 - 1183, 引用 - 0
數(shù)據(jù)加載中……

commoncache與tokyocabinet插入數(shù)據(jù)的效率比較

最近tokyocabinet這個(gè)數(shù)據(jù)庫很流行,網(wǎng)上出現(xiàn)很多研究這個(gè)玩意兒的文章。在它的主頁上,給出的benchmark表明,在它的硬件環(huán)境下,插入一百萬數(shù)據(jù)僅需不到一秒的時(shí)間。

我被震撼了,為了親眼所見,也為了和我之前寫的commoncache庫進(jìn)行比較,我決定在我自己的機(jī)器上,使用同樣類型,大小的數(shù)據(jù),同樣的量級(jí),進(jìn)行插入數(shù)據(jù)這個(gè)操作的比較。

下面給出我寫的測試文件:
針對(duì)tokyocabinet的:
test_unfix_cache.c
/********************************************************************

    created:    2008/05/30

    filename:     test_unfix_cache.c

    author:        Lichuang

                

    purpose:    

********************************************************************
*/



#include 
<stdlib.h>

#include 
<stdio.h>

#include 
<string.h>

#include 
<errno.h>

#include 
<unistd.h>

#include 
<fcntl.h>

#include 
<sys/types.h>

#include 
<sys/wait.h>

#include 
<netinet/in.h>

#include 
<signal.h>

#include 
<arpa/inet.h>



#include 
<tcutil.h>

#include 
<tchdb.h>



TCHDB 
*hdb = NULL;



void mainloop();

void createrandstring(char* stringint len);



int isparent = 0;



int main()

{

    hdb 
= tchdbnew();

    
if (!hdb)

    {

        printf(
"create error!\n");

        exit(
-1);

    }



    
if (!tchdbopen(hdb, "1.hdb", HDBOWRITER | HDBOCREAT))

    {

        printf(
"open error!\n");

        exit(
-1);

    }



    mainloop();



    
return 0;

}



#define STRING_LEN 5



void mainloop()

{

    
char string[STRING_LEN];

    
int num, i, len;



    srand((unsigned)time(NULL) 
+ getpid());

    len 
= STRING_LEN - 1;



    
for (i = 1; i < 1000000++i)

    {

        memset(
string0, STRING_LEN);

        createrandstring(
string, len);



        
if (!tchdbput2(hdb, stringstring))            

        {

        }

        
else

        {

        }

    }



    printf(
"pid = %d, test done\n", getpid());

}



const char str[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";



void createrandstring(char* stringint len)

{

    
int x, i;

    
for (i = 0; i < len - 1++i)

    {

        x 
= rand() % (sizeof(str) - 1);  

        
//x = (i + len) % (sizeof(str) - 1);  

        

        
string[i] = str[x];

    }



    
string[++i] = str[len % sizeof(str) + 1];

    
string[i] = '\0';

}


對(duì)應(yīng)的Makefile:
all:test_unfix_cache.c
    gcc 
-I/usr/local/include test_unfix_cache.c -o test_unfix_cache  -L/usr/local/lib -ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc

而針對(duì)commoncache的測試文件是:
/********************************************************************
    created:    2008/05/30
    filename:     test_unfix_cache.c
    author:        Lichuang
                
    purpose:    
********************************************************************
*/

#include 
<stdlib.h>
#include 
<stdio.h>
#include 
<string.h>
#include 
<errno.h>
#include 
<unistd.h>
#include 
<fcntl.h>
#include 
<sys/types.h>
#include 
<sys/wait.h>
#include 
<netinet/in.h>
#include 
<signal.h>
#include 
<arpa/inet.h>

#include 
"ccache.h"
#include 
"memory.h"

ccache_t
* cache;

void mainloop();
void createrandstring(char* stringint len);

int isparent = 0;

int main()
{
    cache 
= ccache_create(75000100"./testunfixmap"108101);
    
if (NULL == cache)
    {
        printf(
"create_cache error!\n");
        
return -1;
    }

    mainloop();

    
return 0;
}

#define STRING_LEN 5

int cmp_fun(const void* data1, const void* data2, int len)
{
    
return memcmp(data1, data2, sizeof(char* len);
}

void mainloop()
{
    
char string[STRING_LEN];
    
int i, len;
    ccache_data_t data;

    srand((unsigned)time(NULL) 
+ getpid());
    len 
= STRING_LEN - 1;

    
for (i = 1; i < 1000000++i)
    {
        memset(
string0, STRING_LEN);
        createrandstring(
string, len);

        data.datasize 
= len;
        data.keysize 
= len;
        data.data 
= (void*)&string;
        data.key  
= (void*)&string;

        
//printf("i = %d\n", i);

        
if (0 > ccache_insert(&data, cache, cmp_fun, NULL, NULL))
        {
        }
        
else
        {
            
continue;
        }
    }

    printf(
"pid = %d, test done\n", getpid());
}

const char str[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

void createrandstring(char* stringint len)
{
    
int x, i;
    
for (i = 0; i < len - 1++i)
    {
        x 
= rand() % (sizeof(str) - 1);  
        
//x = (i + len) % (sizeof(str) - 1);  
        
        
string[i] = str[x];
    }

    
string[++i] = str[len % sizeof(str) + 1];
    
string[i] = '\0';
}

在commoncache的項(xiàng)目代碼的test目錄中,同樣存在一個(gè)名為test_unfix_test.c的文件,是我以前寫commoncache時(shí)測試用的,不過原來的那個(gè)文件功能較多,不僅有插入操作,還有查找,替換等操作,這次為了測試,我對(duì)這個(gè)文件進(jìn)行了精簡,只保留插入數(shù)據(jù)操作的部分。使用的是commoncache中的hash-rbtree結(jié)構(gòu)。

性能測試結(jié)果:
tokyocabinet:
lichuang@lichuang:/media/e/source/tokyocabinet/test$ time ./test_unfix_cache 
pid 
= 15464, test done

real    0m0.373s
user    0m0.364s
sys    0m0.008s
commoncache:
lichuang@lichuang:/media/e/source/ccache/bin$ time ./test_unfix_cache 
pid 
= 15514, test done

real    0m0.235s
user    0m0.228s
sys    0m0.004s
看上來,commoncache比之tokyocabinet還稍好一些?
不過,commoncache與tokyocabinet還是有區(qū)別的,前者工作的區(qū)域是共享內(nèi)存,后者是磁盤文件,有這樣的表現(xiàn),確實(shí)驚人。

這次比較,起碼給了我一些些的自信,我的commoncache不比世界一流的文件數(shù)據(jù)庫性能差的太多。
下一步,我想繼續(xù)下面的幾個(gè)工作:
1) 國慶的時(shí)候,整理出一份commoncache的設(shè)計(jì)文檔,算是階段性的一個(gè)小結(jié)。另外,commoncache在插入數(shù)據(jù)的時(shí)候,有時(shí)會(huì)報(bào)錯(cuò),我還得查查是為什么。
2) 抽空要開始研究文件數(shù)據(jù)庫的實(shí)現(xiàn)了,tokyocabinet就是一個(gè)不錯(cuò)的參考。

另外,多說幾句,一個(gè)產(chǎn)品要成功,僅僅有性能是不夠,可維護(hù)性,可備份性,優(yōu)秀的協(xié)議設(shè)計(jì)等等,都是重要的指標(biāo)。我想,commoncache只做到了性能這一點(diǎn),我需要在其他幾方面繼續(xù)努力。

哦,忘了給出我的環(huán)境參數(shù):
ubuntu9.04,內(nèi)核2.6.18,內(nèi)存3G,intel 雙核CPU。


posted on 2009-09-20 20:02 那誰 閱讀(4248) 評(píng)論(2)  編輯 收藏 引用 所屬分類: ccache

評(píng)論

# re: commoncache與tokyocabinet插入數(shù)據(jù)的效率比較  回復(fù)  更多評(píng)論   

看你的blog好久了,再不頂真說不過去了:)
2009-09-30 21:57 | nanduo

# re: commoncache與tokyocabinet插入數(shù)據(jù)的效率比較  回復(fù)  更多評(píng)論   

內(nèi)存比磁盤快這么一點(diǎn)也算可以?
2013-10-30 01:17 | ddd
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品国产三级国产专播品爱网| 欧美大片在线观看一区二区| 国产精品成人观看视频免费| 亚洲视频免费在线观看| 欧美一区二区三区在线| 精品成人在线视频| 欧美成人免费va影院高清| 日韩视频在线免费| 欧美专区中文字幕| 亚洲激情一区二区| 欧美午夜视频在线观看| 欧美一区二区播放| 亚洲国产精品久久久| 亚洲天堂av图片| 国产一区二区三区av电影| 老司机午夜精品| 中日韩美女免费视频网站在线观看| 久久久久五月天| 99精品福利视频| 国产伦精品一区二区三区免费迷| 久久久伊人欧美| 日韩视频免费观看高清在线视频| 欧美在线网站| 亚洲精选国产| 国产夜色精品一区二区av| 欧美激情精品久久久久久大尺度| 亚洲一二三四久久| 欧美激情乱人伦| 久久久久国产一区二区三区四区| 99热这里只有成人精品国产| 国产日韩免费| 欧美日韩精品一区二区天天拍小说 | 欧美韩日一区二区三区| 一本色道久久综合一区| 欧美中文在线观看| 99成人在线| 亚洲电影一级黄| 国产老女人精品毛片久久| 欧美日本高清| 久久婷婷综合激情| 亚欧成人在线| 一区二区三区视频在线看| 亚洲电影有码| 美女尤物久久精品| 久久精品视频免费播放| 亚洲视频一区二区| 亚洲精品人人| 91久久嫩草影院一区二区| 国产真实乱子伦精品视频| 国产精品高潮呻吟| 欧美日本在线| 欧美黄色小视频| 免费国产自线拍一欧美视频| 久久精品日产第一区二区| 亚洲欧美国产精品va在线观看 | 欧美va亚洲va国产综合| 久久精品人人| 久久国产精品久久久久久| 亚洲欧美日韩在线| 亚洲在线日韩| 亚洲性av在线| 亚洲男女自偷自拍| 亚洲专区欧美专区| 亚洲一区二区高清视频| 亚洲视频在线观看网站| 一区二区久久久久| 在线视频精品| 亚洲一区免费| 午夜久久资源| 性欧美1819性猛交| 亚洲欧美影音先锋| 久久9热精品视频| 久久国产乱子精品免费女| 欧美一区在线直播| 欧美一区视频在线| 久久精品人人做人人综合| 久久久99久久精品女同性| 久久亚洲精选| 欧美高清不卡| 欧美视频中文在线看 | 欧美国产日本高清在线| 欧美大片免费| 亚洲精品一级| 亚洲天堂成人| 欧美尤物巨大精品爽| 久久成人18免费网站| 久久夜精品va视频免费观看| 欧美成人精品三级在线观看| 欧美日韩国产片| 国产精品视频在线观看| 国产一区二区欧美日韩| 最新国产拍偷乱拍精品| 中日韩视频在线观看| 久久成人av少妇免费| 免费观看一区| 99精品欧美一区二区三区| 亚洲欧美日本日韩| 久久免费精品视频| 欧美日韩精品二区| 国产手机视频一区二区| 亚洲国产日韩美| 午夜精品理论片| 久久综合久久综合九色| 亚洲精选在线观看| 午夜久久美女| 欧美美女bbbb| 国产综合色产在线精品| 日韩午夜精品| 久久久久久9999| 亚洲乱码国产乱码精品精天堂| 亚洲一区二区三区影院| 久久综合久久美利坚合众国| 国产精品成人播放| 亚洲国产高清一区| 亚洲欧美日韩成人| 欧美成人国产一区二区| 亚洲午夜激情| 欧美成人嫩草网站| 国产又爽又黄的激情精品视频| 亚洲久久一区二区| 久久精品夜色噜噜亚洲a∨ | 亚洲私人影院在线观看| 蜜桃精品久久久久久久免费影院| 国产精品久久久久一区二区三区共| 伊人成人在线视频| 亚洲午夜精品久久久久久浪潮| 美女诱惑黄网站一区| 亚洲一区久久久| 欧美日韩一区二区三| 亚洲国产精品va在看黑人| 欧美在线观看视频| 99视频在线精品国自产拍免费观看 | 亚洲欧美日韩一区在线观看| 欧美激情欧美狂野欧美精品| 国产一区二区无遮挡| 亚洲性色视频| 亚洲精品乱码| 久久久久国产精品人| 国产日韩三区| 香港久久久电影| 亚洲美女少妇无套啪啪呻吟| 免费看的黄色欧美网站| 狠狠色丁香久久婷婷综合丁香| 亚洲综合精品四区| 亚洲美女在线观看| 欧美精品成人| 日韩一区二区精品葵司在线| 欧美gay视频激情| 久久亚洲综合网| 在线观看欧美精品| 欧美18av| 麻豆成人在线观看| 在线精品视频一区二区| 看欧美日韩国产| 久久精品日产第一区二区三区| 国产一区香蕉久久| 久久久久久亚洲精品中文字幕| 亚洲影音先锋| 国产麻豆日韩| 久久精品国产亚洲高清剧情介绍| 午夜精品久久久久久| 国产网站欧美日韩免费精品在线观看| 亚洲欧洲av一区二区| 亚洲免费视频一区二区| 国产精品一区二区在线观看网站 | 新狼窝色av性久久久久久| 国产婷婷色一区二区三区在线| 久久国产精品99精品国产| 香蕉久久夜色精品国产使用方法| 国产日韩欧美高清| 久久一区亚洲| 欧美成人综合网站| 一级日韩一区在线观看| 99精品欧美一区| 国产精品自在在线| 麻豆国产精品一区二区三区 | 欧美视频免费在线| 亚洲欧美日本另类| 久久国产高清| 亚洲精品日产精品乱码不卡| 99精品国产在热久久婷婷| 国产精品高清免费在线观看| 久久狠狠亚洲综合| 久久久亚洲影院你懂的| 亚洲美女色禁图| 亚洲一区二区在| 在线观看欧美黄色| 亚洲精品一线二线三线无人区| 国产精品对白刺激久久久| 久久精品国产精品亚洲综合| 久热精品视频在线观看| 在线视频亚洲一区| 亚洲欧美视频一区| 永久免费毛片在线播放不卡| 亚洲人成网在线播放| 国产伦理精品不卡| 亚洲高清不卡| 国产精品一区久久久| 欧美国产亚洲视频| 国产精品男女猛烈高潮激情|