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

那誰的技術博客

感興趣領域:高性能服務器編程,存儲,算法,Linux內核
隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
數據加載中……

commoncache與tokyocabinet插入數據的效率比較

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

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

下面給出我寫的測試文件:
針對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';

}


對應的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

而針對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的項目代碼的test目錄中,同樣存在一個名為test_unfix_test.c的文件,是我以前寫commoncache時測試用的,不過原來的那個文件功能較多,不僅有插入操作,還有查找,替換等操作,這次為了測試,我對這個文件進行了精簡,只保留插入數據操作的部分。使用的是commoncache中的hash-rbtree結構。

性能測試結果:
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ū)域是共享內存,后者是磁盤文件,有這樣的表現,確實驚人。

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

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

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


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

評論

# re: commoncache與tokyocabinet插入數據的效率比較  回復  更多評論   

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

# re: commoncache與tokyocabinet插入數據的效率比較  回復  更多評論   

內存比磁盤快這么一點也算可以?
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>
            亚洲国产精品欧美一二99| 久久男人资源视频| 亚洲国产二区| 午夜精品久久久99热福利| 一本一本a久久| 久久综合999| 久久全国免费视频| 国产日本亚洲高清| 中日韩在线视频| 中文一区二区| 欧美日韩mv| 亚洲国产精品久久久| 亚洲电影免费在线| 久久久久久69| 久久久激情视频| 国产欧美日韩在线| 亚洲欧美高清| 性色一区二区三区| 国产精品亚洲一区| 亚洲欧美日韩一区二区在线 | 国产精品久久久久久久久久久久久久| 欧美国产在线视频| 亚洲电影免费观看高清完整版在线观看| 久久久久免费观看| 国产综合婷婷| 久久精品国产v日韩v亚洲 | 国产一区二区精品| 午夜视频一区二区| 久久久91精品国产| 伊人久久综合| 蜜臀久久久99精品久久久久久| 麻豆久久婷婷| 91久久久国产精品| 欧美日韩精品一区二区| 一本久久精品一区二区| 亚洲欧美怡红院| 国产欧美一区二区精品忘忧草 | 欧美精品www在线观看| 亚洲美女av在线播放| 一区二区三区久久精品| 国产精品久久久久久影院8一贰佰| 中文av字幕一区| 欧美一区二区在线视频| 韩国欧美一区| 免费永久网站黄欧美| 99日韩精品| 久久精品人人做人人综合| 在线播放日韩欧美| 欧美日韩1区2区| 亚洲欧美在线一区二区| 欧美成人一区二区| 亚洲视频图片小说| 国产一区二区三区不卡在线观看| 久久青草福利网站| 99亚洲一区二区| 久久久www成人免费毛片麻豆| **欧美日韩vr在线| 国产精品极品美女粉嫩高清在线| 欧美一区二区免费视频| 91久久精品一区二区别| 欧美一区高清| 日韩视频―中文字幕| 国产亚洲欧美日韩日本| 欧美精品一区二| 性久久久久久| 亚洲精品欧美| 老鸭窝91久久精品色噜噜导演| 亚洲美女性视频| 国产一区二区三区在线播放免费观看| 欧美h视频在线| 午夜精品99久久免费| 亚洲啪啪91| 久久久女女女女999久久| 一区二区三区久久网| 在线观看视频欧美| 国产精品一区二区在线观看网站 | 久久精品国产99国产精品| 亚洲精品影院在线观看| 国产一区二区三区四区hd| 欧美日韩天天操| 麻豆精品一区二区综合av| 性8sex亚洲区入口| 日韩视频免费观看高清完整版| 裸体女人亚洲精品一区| 久久国产综合精品| 亚洲欧美一级二级三级| 一本色道久久综合一区| 亚洲欧洲精品天堂一级| 国产在线精品成人一区二区三区| 欧美性色aⅴ视频一区日韩精品| 免费精品99久久国产综合精品| 欧美激情第1页| 欧美在线视频一区二区三区| 亚洲午夜一区二区| 99精品福利视频| 亚洲日本中文| 亚洲人成在线观看一区二区| 免费视频最近日韩| 美女精品在线观看| 久久综合色影院| 久久久精品欧美丰满| 欧美在现视频| 久久本道综合色狠狠五月| 午夜久久电影网| 亚洲欧美日韩视频一区| 午夜精品福利在线| 亚洲综合精品四区| 午夜精品一区二区三区在线视 | 国产精品久久久久久久久免费| 欧美不卡高清| 欧美激情一区二区三区成人| 欧美极品在线视频| 欧美日韩精品二区| 欧美三区在线| 国产精品一区二区你懂得| 国产精品国产三级国产普通话蜜臀| 欧美日韩国语| 国产精品社区| 国产亚洲福利一区| 在线成人激情视频| 亚洲裸体视频| 亚洲性感激情| 久久精品夜夜夜夜久久| 母乳一区在线观看| 91久久综合| 亚洲一区二区三区精品动漫| 午夜精品久久久久久久99黑人| 久久国产精品色婷婷| 老司机午夜免费精品视频| 欧美精品三级日韩久久| 国产精品久久九九| 狠狠色狠狠色综合人人| 亚洲日本va在线观看| 亚洲午夜在线视频| 久久视频免费观看| 亚洲国内自拍| 亚洲欧美精品| 免费亚洲电影在线| 国产精品久久激情| 亚洲国产成人av在线| 亚洲无线视频| 美女露胸一区二区三区| 一本色道久久综合精品竹菊| 欧美一区二区三区日韩视频| 欧美成人免费在线观看| 国产伦理一区| 亚洲乱码一区二区| 久久久999精品视频| 亚洲肉体裸体xxxx137| 亚洲欧美中文日韩在线| 欧美激情免费观看| 狠狠色丁香婷婷综合久久片| 一区二区三区视频免费在线观看| 久久激情一区| 亚洲美女毛片| 免费观看亚洲视频大全| 国产欧美日韩在线播放| 99成人在线| 免费亚洲电影在线观看| 亚洲欧美乱综合| 欧美日韩国产首页| 在线观看国产日韩| 久久激情综合网| 一区二区欧美亚洲| 欧美激情导航| 亚洲国产精品va在看黑人| 久久岛国电影| 一区二区日韩精品| 欧美精品成人一区二区在线观看 | 国产伊人精品| 亚洲欧美视频| 99精品欧美一区二区蜜桃免费| 蜜桃av一区二区三区| 国产一区二区精品久久99| 午夜精品久久久久久久久 | 亚洲午夜精品一区二区| 欧美激情一区二区三区不卡| 亚洲电影成人| 久热国产精品视频| 欧美在线视频免费观看| 国产日韩亚洲欧美综合| 亚洲欧美制服中文字幕| 中文精品99久久国产香蕉| 欧美理论电影在线播放| 亚洲精品三级| 亚洲国产精品久久久| 欧美成人第一页| 最新亚洲激情| 亚洲电影欧美电影有声小说| 麻豆9191精品国产| 亚洲第一级黄色片| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美一区二区高清| 狠狠88综合久久久久综合网| 久久久久这里只有精品| 久久久精品视频成人| 激情六月婷婷久久| 欧美电影在线观看完整版| 欧美va亚洲va国产综合| 亚洲精品一区二区三区福利|