Exemplo n.º 1
0
bool Dict::query(char* url)
{
    unsigned sign1, sign2;
    Sdict_snode snode;

    creat_sign_f64(url, strlen(url), &sign1, &sign2);
    snode.sign1 = sign1;
    snode.sign2 = sign2;
    snode.code = -1;
    db_op1((Sdict_build*)_wordDict, &snode, SEEK);
    if (-1 != snode.code) {
        return true;
    }
    return false;
}
Exemplo n.º 2
0
int Dict::add(char* url)
{
    unsigned sign1, sign2;
    Sdict_snode snode;

    creat_sign_f64(url, strlen(url), &sign1, &sign2);
    snode.sign1 = sign1;
    snode.sign2 = sign2;
    snode.code = -1;
    snode.other = 0;
    if (-1 == db_op1((Sdict_build*)_wordDict, &snode, ADD)) {
        return -1;
    }
    return 0;
}
Exemplo n.º 3
0
int main(int argc, char *argv[])
{
#define ADD_COUNT    100
#define SEEK_COUNT   100

    sodict_build_t *sdb;
    sodict_snode_t snode;
 
    Sdict_build    *udb;
    Sdict_snode    unode;

    struct timeval ss, se, us, ue;

    printf("Comparison between odict and uldict!\n");

    printf("Create a odict dictionary object ... \t");
    sdb = odb_creat(10000000);
    if (sdb != NULL) {
        printf("OK\n");
    }
    else {
        printf("FAIL\n");
        return 1;
    }

    printf("Create a uldict dictionary object ... \t");
    udb = db_creat(10000000, 0);
    if (sdb != NULL) {
        printf("OK\n");
    }
    else {
        printf("FAIL\n");
        return 1;
    }

    // add node
    printf("Insert %d nodes into odict dictionary object ... \t", ADD_COUNT);
    snode.sign1 = 25;
    snode.sign2 = 30;
    snode.cuint1 = 28;
    snode.cuint2 = 0xffffffff;
    gettimeofday(&ss, NULL);
    for (int i = 0 ; i < ADD_COUNT ; i++) {
        snode.sign1 = 25 + i;
        snode.sign2 = 30 + i;
        if (ODB_ADD_OK != odb_add(sdb, &snode, 1)) {
            printf("FAIL\n");
        }
    }
    gettimeofday(&se, NULL);
    printf("Finished!\n");

    printf("Insert %d nodes into uldict dictionary object ... \t", ADD_COUNT);
    unode.sign1 = 25;
    unode.sign2 = 30;
    unode.code = 28;
    unode.other = 0x00ffffff;
    gettimeofday(&us, NULL);
    for (int i = 0 ; i < ADD_COUNT ; i++) {
        unode.sign1 = 25 + i;
        unode.sign2 = 30 + i;
        db_op1(udb, &unode, ADD);
    }
    gettimeofday(&ue, NULL);
    printf("Finished!\n");
    
    printf("odict add operation: %f ms, %f us per req\n", 
        (se.tv_sec - ss.tv_sec) * 1000 + (se.tv_usec - ss.tv_usec) / 1000.0,
        ((se.tv_sec - ss.tv_sec) * 1000000.0 + (se.tv_usec - ss.tv_usec)) / ADD_COUNT);
    printf("uldict add operation: %f ms, %f us per req\n", 
        (ue.tv_sec - us.tv_sec) * 1000 + (ue.tv_usec - us.tv_usec) / 1000.0,
        ((ue.tv_sec - us.tv_sec) * 1000000.0 + (ue.tv_usec - us.tv_usec)) / ADD_COUNT);

    // seek node
    printf("Seek %d nodes from odict dictionary object ... \t", SEEK_COUNT);
    snode.sign1 = 25;
    snode.sign2 = 30;
    snode.cuint1 = 28;
    snode.cuint2 = 0xffffffff;
    gettimeofday(&ss, NULL);
    for (int i = 0 ; i < SEEK_COUNT ; i++) {
        snode.sign1 = 25 + i;
        snode.sign2 = 30 + i;
        if (ODB_ADD_OK != odb_seek(sdb, &snode)) {
            printf("FAIL\n");
        }
    }
    gettimeofday(&se, NULL);
    printf("Finished!\n");

    odb_adjust(sdb);
    snode.sign1 = 25;
    snode.sign2 = 30;
    snode.cuint1 = 28;
    snode.cuint2 = 0xffffffff;
    for (int i = 0 ; i < SEEK_COUNT ; i++) {
	snode.sign1 = 25 + i;
	snode.sign2 = 30 + i;
	if (ODB_ADD_OK != odb_seek(sdb, &snode)) {
	     printf("FAIL\n");
	}
    }
    
    odb_del(sdb,&snode);
    odb_add(sdb,&snode,1);
    if (ODB_ADD_OK != odb_seek(sdb, &snode)){
    	printf ("fail\n");
    }
    printf("Seek %d nodes from uldict dictionary object ... \t", SEEK_COUNT);
    unode.sign1 = 25;
    unode.sign2 = 30;
    unode.code = 28;
    unode.other = 0x00ffffff;
    gettimeofday(&us, NULL);
    for (int i = 0 ; i < SEEK_COUNT ; i++) {
        unode.sign1 = 25 + i;
        unode.sign2 = 30 + i;
        db_op1(udb, &unode, SEEK);
    }
    gettimeofday(&ue, NULL);
    printf("Finished!\n");

    printf("odict seek operation: %f ms, %f us per req\n", 
        (se.tv_sec - ss.tv_sec) * 1000 + (se.tv_usec - ss.tv_usec) / 1000.0,
        ((se.tv_sec - ss.tv_sec) * 1000000.0 + (se.tv_usec - ss.tv_usec)) / SEEK_COUNT);
    printf("uldict seek operation: %f ms, %f us per req\n", 
        (ue.tv_sec - us.tv_sec) * 1000 + (ue.tv_usec - us.tv_usec) / 1000.0,
        ((ue.tv_sec - us.tv_sec) * 1000000.0 + (ue.tv_usec - us.tv_usec)) / SEEK_COUNT);


    // save operation
    printf("Save odict dictionary to file ... \t");
    gettimeofday(&ss, NULL);
    odb_save(sdb, "./", "com.test.dict.odict");
    gettimeofday(&se, NULL);
    printf("OK\n");
    printf("Save uldict dictionary to file ... \t");
    gettimeofday(&us, NULL);
    db_save(udb, "./", "com.test.dict.uldict");
    gettimeofday(&ue, NULL);
    printf("OK\n");

    printf("odict save operation: %f ms, %f us per req\n", 
        (se.tv_sec - ss.tv_sec) * 1000 + (se.tv_usec - ss.tv_usec) / 1000.0,
        ((se.tv_sec - ss.tv_sec) * 1000000.0 + (se.tv_usec - ss.tv_usec)) / SEEK_COUNT);
    printf("uldict save operation: %f ms, %f us per req\n", 
        (ue.tv_sec - us.tv_sec) * 1000 + (ue.tv_usec - us.tv_usec) / 1000.0,
        ((ue.tv_sec - us.tv_sec) * 1000000.0 + (ue.tv_usec - us.tv_usec)) / SEEK_COUNT);
    odb_adjust(sdb);
    printf ("hash %d\n",odb_get_hashnum(sdb));
 
    /* return */
    return 0;
}