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

那誰的技術博客

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

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

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

我被震撼了,為了親眼所見,也為了和我之前寫的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還是有區別的,前者工作的區域是共享內存,后者是磁盤文件,有這樣的表現,確實驚人。

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

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

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


posted on 2009-09-20 20:02 那誰 閱讀(4233) 評論(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>
            性欧美办公室18xxxxhd| 欧美另类视频在线| 欧美在线一级视频| 亚洲视频在线一区| 久久久久久高潮国产精品视| 亚洲综合不卡| 欧美日韩另类视频| 欧美激情精品久久久六区热门| 国产精品国产三级国产a| 亚洲人成在线播放| 娇妻被交换粗又大又硬视频欧美| 午夜精品久久久久久久99热浪潮| 亚洲与欧洲av电影| 欧美日韩亚洲成人| 亚洲精选久久| 亚洲美女在线观看| 欧美日韩精品在线播放| 亚洲免费成人av电影| 一本一本久久| 欧美日韩一区在线观看| 日韩亚洲精品电影| 亚洲永久网站| 国产欧美一区二区精品忘忧草| 亚洲一区成人| 久久精品国产综合精品| 国内精品嫩模av私拍在线观看 | 国产精品视频xxxx| 亚洲性色视频| 久久九九精品99国产精品| 狠狠色丁香婷婷综合久久片| 久久久免费av| 亚洲欧洲精品成人久久奇米网| 一区二区成人精品 | 裸体一区二区三区| 亚洲黄页一区| 欧美日韩国产免费观看| 亚洲视频欧美视频| 久久久久一区二区三区| 亚洲福利精品| 欧美日韩一区二区三区免费| 亚洲宅男天堂在线观看无病毒| 久久精品视频网| 亚洲国产毛片完整版| 欧美日韩一区三区| 先锋a资源在线看亚洲| 欧美/亚洲一区| 中国女人久久久| 国产一区二区三区奇米久涩| 欧美77777| 亚洲天堂成人在线观看| 久久亚洲二区| 一区二区三区产品免费精品久久75 | 久久久国产视频91| 91久久亚洲| 久久精品在线视频| av72成人在线| 在线观看成人av| 国产精品成人观看视频免费| 久久久精品一区| 在线一区观看| 欧美激情中文字幕乱码免费| 亚洲摸下面视频| 亚洲国产三级网| 国产精品视频网| 欧美大片第1页| 久久国产精品久久国产精品| 亚洲乱码日产精品bd| 久久在线免费观看视频| 亚洲免费在线电影| 亚洲日本黄色| 激情自拍一区| 国产精品夜夜嗨| 欧美日韩另类国产亚洲欧美一级| 久久久久青草大香线综合精品| 中国成人亚色综合网站| 欧美激情一区二区三级高清视频| 欧美一区二区视频97| 这里只有精品丝袜| 亚洲人成人99网站| 精品二区视频| 国产亚洲欧美色| 国产精品久久久久久久久久免费| 麻豆乱码国产一区二区三区| 欧美一区二区三区视频在线| 国产精品99久久久久久宅男| 亚洲国产欧洲综合997久久| 久久免费的精品国产v∧| 亚洲影院高清在线| 中文国产亚洲喷潮| 日韩一级黄色片| 亚洲精品日本| 亚洲精品乱码久久久久久久久| 尤物在线精品| 在线观看日韩欧美| 影音先锋一区| 一区二区视频免费在线观看| 韩国三级在线一区| 国模精品一区二区三区色天香| 国产日韩欧美在线视频观看| 国产精品免费久久久久久| 欧美日韩性生活视频| 欧美日韩国产天堂| 欧美视频日韩视频| 欧美日韩精品在线| 国产精品国产精品| 国产精品视频大全| 国产亚洲精品资源在线26u| 国产日韩欧美精品| 娇妻被交换粗又大又硬视频欧美| 激情综合在线| 亚洲国产精品久久人人爱蜜臀| 亚洲丰满在线| 亚洲精品一区二区三区四区高清| 亚洲精品久久久一区二区三区| 亚洲精品美女在线观看| 日韩一二三在线视频播| 亚洲天堂久久| 欧美一区二区三区在线观看| 久久久精品国产99久久精品芒果| 久久蜜桃资源一区二区老牛| 欧美jizz19性欧美| 亚洲看片免费| 午夜精品在线视频| 久久亚洲精品一区二区| 欧美精品一二三| 国产精品入口麻豆原神| 精品9999| 一区二区av| 久久激情网站| 亚洲国产成人av好男人在线观看| 亚洲日本成人在线观看| 午夜精品视频在线观看一区二区| 久久久噜噜噜久久中文字免| 欧美日韩精品国产| 国产欧美一区二区精品性| 亚洲国产成人不卡| 这里是久久伊人| 久久婷婷国产综合尤物精品| 亚洲激情一区二区三区| 亚洲欧美在线观看| 欧美精品一区在线| 狠狠色综合色区| 亚洲一二三区在线| 免费不卡在线观看av| 99精品欧美一区二区蜜桃免费| 欧美专区在线观看| 欧美日韩午夜剧场| 亚洲国产精品精华液网站| 亚洲欧美日韩精品综合在线观看| 免费在线成人| 亚洲欧美大片| 欧美激情区在线播放| 国内自拍亚洲| 亚洲欧美在线看| 亚洲三级电影在线观看 | 欧美有码在线观看视频| 欧美日韩综合一区| 亚洲激情在线观看视频免费| 久久久999精品| 亚洲一区二区三区四区视频| 欧美风情在线观看| 伊人久久噜噜噜躁狠狠躁| 性做久久久久久久免费看| 亚洲第一搞黄网站| 久久久久国产一区二区三区四区| 国产精品久久久久久影视| 一本色道88久久加勒比精品| 欧美顶级艳妇交换群宴| 欧美诱惑福利视频| 国产乱码精品一区二区三| 亚洲特级毛片| 亚洲精品久久久久久久久久久| 麻豆91精品| 影音先锋久久精品| 久久亚洲春色中文字幕久久久| 午夜精品理论片| 国产乱码精品一区二区三区av| 亚洲一区视频在线观看视频| 亚洲三级国产| 欧美精选午夜久久久乱码6080| 亚洲国产精品成人综合| 久热精品在线| 久久精品国亚洲| 在线不卡中文字幕| 免费成人网www| 乱码第一页成人| 亚洲激情国产| 欧美激情综合色| 欧美激情一区二区三级高清视频| 亚洲欧洲一级| 亚洲裸体俱乐部裸体舞表演av| 欧美国产在线电影| 99精品国产在热久久下载| 亚洲精品极品| 国产精品s色| 欧美中文字幕久久| 久久久精品久久久久| 91久久精品美女高潮| 亚洲电影免费观看高清完整版| 欧美激情区在线播放|