⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stress.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    {    unsigned ids[] = {0, 65536, 65535, 65535*3, 65535*2, 10};    unsigned to_add = sizeof(ids)/sizeof(unsigned);    bvect        bvect_full1;    bvect        bvect_full2;        bvect_mini   bvect_min1(BITVECT_SIZE);    bvect_full1.set_new_blocks_strat(bm::BM_GAP);    bvect_full2.set_new_blocks_strat(bm::BM_GAP);        unsigned bn = 0;    for (unsigned i = 0; i < to_add; ++i)    {        ids[i] = bn;        bvect_full2.set(bn);        bvect_min1.set_bit(bn);        bn += 15;    }        unsigned* first = ids;    unsigned* last = ids + to_add;        bm::combine_or(bvect_full1, first, last);    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);    bm::combine_or(bvect_full1, first, last);    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);        }    }void SubOperationsTest(){    assert(ITERATIONS < BITVECT_SIZE);    cout << "----------------------------------- SubOperationTest" << endl;    {    bvect_mini   bvect_min1(256);    bvect_mini   bvect_min2(256);    bvect        bvect_full1;    bvect        bvect_full2;    bvect_full1.set_new_blocks_strat(bm::BM_GAP);    bvect_full2.set_new_blocks_strat(bm::BM_GAP);    printf("SUB test\n");    bvect_min1.set_bit(1);    bvect_min1.set_bit(12);    bvect_min1.set_bit(13);    bvect_min2.set_bit(12);    bvect_min2.set_bit(13);    bvect_min1.combine_sub(bvect_min2);    bvect_full1.set_bit(1);    bvect_full1.set_bit(12);    bvect_full1.set_bit(13);    bvect_full2.set_bit(12);    bvect_full2.set_bit(13);    bm::id_t predicted_count = bm::count_sub(bvect_full1, bvect_full2);    bvect_full1.bit_sub(bvect_full2);        bm::id_t count = bvect_full1.count();    if (count != predicted_count)    {        cout << "Predicted count error!" << endl;        exit(1);    }    CheckVectors(bvect_min1, bvect_full1, 256);    CheckCountRange(bvect_full1, 0, 256);    }    {    bvect_mini   bvect_min1(BITVECT_SIZE);    bvect_mini   bvect_min2(BITVECT_SIZE);    bvect        bvect_full1;    bvect        bvect_full2;    bvect_full1.set_new_blocks_strat(bm::BM_GAP);    bvect_full2.set_new_blocks_strat(bm::BM_GAP);    printf("SUB test stage 2.\n");    FillSets(&bvect_min1, &bvect_full1, 1, BITVECT_SIZE/7, 0);    FillSets(&bvect_min2, &bvect_full2, 1, BITVECT_SIZE/7, 0);    bvect_min1.combine_sub(bvect_min2);    bm::id_t predicted_count = bm::count_sub(bvect_full1, bvect_full2);    bvect_full1.bit_sub(bvect_full2);        bm::id_t count = bvect_full1.count();    if (count != predicted_count)    {        cout << "Predicted count error!" << endl;        cout << predicted_count << " " << count << endl;bvect_full1.stat();                    exit(1);    }        CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE/10+10);    CheckCountRange(bvect_full1, 0, BITVECT_SIZE/10+10);    }    {    bvect_mini   bvect_min1(BITVECT_SIZE);    bvect_mini   bvect_min2(BITVECT_SIZE);    bvect        bvect_full1;    bvect        bvect_full2;    bvect_full1.set_new_blocks_strat(bm::BM_BIT);    bvect_full2.set_new_blocks_strat(bm::BM_BIT);    cout << "------------------------------" << endl;    printf("SUB test stage 3.\n");    FillSets(&bvect_min1, &bvect_full1, 1, BITVECT_SIZE/5, 2);    FillSets(&bvect_min2, &bvect_full2, 1, BITVECT_SIZE/5, 2);    bvect_min1.combine_sub(bvect_min2);        bm::id_t predicted_count = bm::count_sub(bvect_full1, bvect_full2);    bvect_full1.bit_sub(bvect_full2);    bm::id_t count = bvect_full1.count();    if (count != predicted_count)    {        cout << "Predicted count error!" << endl;        exit(1);    }    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);    bvect_full1.optimize();    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);    CheckCountRange(bvect_full1, 0, BITVECT_SIZE);    }}void XorOperationsTest(){    assert(ITERATIONS < BITVECT_SIZE);    cout << "----------------------------------- XorOperationTest" << endl;    {    bvect_mini   bvect_min1(256);    bvect_mini   bvect_min2(256);    bvect        bvect_full1;    bvect        bvect_full2;    bvect_full1.set_new_blocks_strat(bm::BM_GAP);    bvect_full2.set_new_blocks_strat(bm::BM_GAP);    printf("XOR test\n");    bvect_min1.set_bit(1);    bvect_min1.set_bit(12);    bvect_min1.set_bit(13);    bvect_min2.set_bit(12);    bvect_min2.set_bit(13);    bvect_min1.combine_xor(bvect_min2);    bvect_full1.set_bit(1);    bvect_full1.set_bit(12);    bvect_full1.set_bit(13);    bvect_full2.set_bit(12);    bvect_full2.set_bit(13);    bm::id_t predicted_count = bm::count_xor(bvect_full1, bvect_full2);    bvect_full1.bit_xor(bvect_full2);    bm::id_t count = bvect_full1.count();    if (count != predicted_count)    {        cout << "1.Predicted count error!" << endl;        exit(1);    }    CheckVectors(bvect_min1, bvect_full1, 256);    CheckCountRange(bvect_full1, 0, 256);    CheckCountRange(bvect_full1, 128, 256);    }    {        bvect  bvect1;        bvect_mini  bvect_min1(BITVECT_SIZE);        bvect  bvect2;        bvect_mini  bvect_min2(BITVECT_SIZE);        for (int i = 0; i < 150000; ++i)        {            bvect2.set_bit(i);            bvect_min2.set_bit(i);        }        bvect2.optimize();        bm::id_t predicted_count = bm::count_xor(bvect1, bvect2);        bvect1.bit_xor(bvect2);                bm::id_t count = bvect1.count();        if (count != predicted_count)        {            cout << "2.Predicted count error!" << endl;            exit(1);        }                bvect_min1.combine_xor(bvect_min2);        CheckVectors(bvect_min1, bvect1, BITVECT_SIZE, true);        CheckCountRange(bvect1, 0, BITVECT_SIZE);    }    {        bvect  bvect1;        bvect_mini  bvect_min1(BITVECT_SIZE);        bvect  bvect2;        bvect_mini  bvect_min2(BITVECT_SIZE);        for (int i = 0; i < 150000; ++i)        {            bvect1.set_bit(i);            bvect_min1.set_bit(i);        }        bvect1.optimize();                bm::id_t predicted_count = bm::count_xor(bvect1, bvect2);        bvect1.bit_xor(bvect2);        bm::id_t count = bvect1.count();        if (count != predicted_count)        {            cout << "3.Predicted count error!" << endl;            exit(1);        }                bvect_min1.combine_xor(bvect_min2);        CheckVectors(bvect_min1, bvect1, BITVECT_SIZE, true);    }    {        bvect  bvect1;        bvect_mini  bvect_min1(BITVECT_SIZE);        bvect  bvect2;        bvect_mini  bvect_min2(BITVECT_SIZE);        for (int i = 0; i < 150000; ++i)        {            bvect1.set_bit(i);            bvect_min1.set_bit(i);            bvect2.set_bit(i);            bvect_min2.set_bit(i);        }        bvect1.optimize();                bm::id_t predicted_count = bm::count_xor(bvect1, bvect2);        bvect1.bit_xor(bvect2);        bm::id_t count = bvect1.count();        if (count != predicted_count)        {            cout << "4.Predicted count error!" << endl;            cout << count << " " << predicted_count << endl;                        exit(1);        }                bvect_min1.combine_xor(bvect_min2);        CheckVectors(bvect_min1, bvect1, BITVECT_SIZE, true);    }    {    bvect_mini   bvect_min1(BITVECT_SIZE);    bvect_mini   bvect_min2(BITVECT_SIZE);    bvect        bvect_full1;    bvect        bvect_full2;    bvect_full1.set_new_blocks_strat(bm::BM_GAP);    bvect_full2.set_new_blocks_strat(bm::BM_GAP);    printf("XOR test stage 2.\n");    FillSets(&bvect_min1, &bvect_full1, 1, BITVECT_SIZE/7, 0);    FillSets(&bvect_min2, &bvect_full2, 1, BITVECT_SIZE/7, 0);    bvect_min1.combine_xor(bvect_min2);        bm::id_t predicted_count = bm::count_xor(bvect_full1, bvect_full2);        bvect_full1.bit_xor(bvect_full2);        bm::id_t count = bvect_full1.count();    if (count != predicted_count)    {        cout << "5.Predicted count error!" << endl;        cout << count << " " << predicted_count << endl;        bvect_full1.stat();        exit(1);    }    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE/10+10);    CheckCountRange(bvect_full1, 0, BITVECT_SIZE/10+10);    }    {    bvect_mini   bvect_min1(BITVECT_SIZE);    bvect_mini   bvect_min2(BITVECT_SIZE);    bvect        bvect_full1;    bvect        bvect_full2;    bvect_full1.set_new_blocks_strat(bm::BM_BIT);    bvect_full2.set_new_blocks_strat(bm::BM_BIT);    cout << "------------------------------" << endl;    printf("XOR test stage 3.\n");    FillSets(&bvect_min1, &bvect_full1, 1, BITVECT_SIZE/5, 2);    FillSets(&bvect_min2, &bvect_full2, 1, BITVECT_SIZE/5, 2);    bm::id_t predicted_count = bm::count_xor(bvect_full1, bvect_full2);    bvect_min1.combine_xor(bvect_min2);    bvect_full1.bit_xor(bvect_full2);    bm::id_t count = bvect_full1.count();    if (count != predicted_count)    {        cout << "6.Predicted count error!" << endl;        exit(1);    }    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);    bvect_full1.optimize();    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);    CheckCountRange(bvect_full1, 0, BITVECT_SIZE);    }    cout << "Testing combine_xor" << endl;        {        bvect        bvect_full1;    bvect        bvect_full2;    bvect_mini   bvect_min1(BITVECT_SIZE);        bvect_full1.set_new_blocks_strat(bm::BM_GAP);    bvect_full2.set_new_blocks_strat(bm::BM_GAP);    unsigned ids[10000];    unsigned to_add = 10000;        unsigned bn = 0;    for (unsigned i = 0; i < to_add; ++i)    {        ids[i] = bn;        bvect_full2.set(bn);        bvect_min1.set_bit(bn);        bn += 15;    }        unsigned* first = ids;    unsigned* last = ids + to_add;        bm::combine_xor(bvect_full1, first, last);    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);        bm::combine_xor(bvect_full1, first, last);    if (bvect_full1.count())    {        cout << "combine_xor count failed!" << endl;        exit(1);    }        }    {        bvect        bvect_full1;    bvect        bvect_full2;    bvect_mini   bvect_min1(BITVECT_SIZE);        bvect_full1.set_new_blocks_strat(bm::BM_GAP);    bvect_full2.set_new_blocks_strat(bm::BM_GAP);    unsigned ids[10000]={0,};    unsigned to_add = 10000;        for (unsigned i = 0; i < to_add; i+=100)    {        ids[i] = i;        bvect_full2.set(i);        bvect_min1.set_bit(i);    }    unsigned* first = ids;    unsigned* last = ids + to_add;        bm::combine_xor(bvect_full1, first, last);    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);        bm::combine_xor(bvect_full1, first, last);    if (bvect_full1.count())    {        cout << "combine_xor count failed!" << endl;        exit(1);    }        }        {    unsigned ids[] = {0, 65536, 65535, 65535*3, 65535*2, 10};    unsigned to_add = sizeof(ids)/sizeof(unsigned);    bvect        bvect_full1;    bvect        bvect_full2;        bvect_mini   bvect_min1(BITVECT_SIZE);    bvect_full1.set_new_blocks_strat(bm::BM_BIT);    bvect_full2.set_new_blocks_strat(bm::BM_BIT);        unsigned bn = 0;    for (unsigned i = 0; i < to_add; ++i)    {        ids[i] = bn;        bvect_full2.set(bn);        bvect_min1.set_bit(bn);        bn += 15;    }        unsigned* first = ids;    unsigned* last = ids + to_add;        bm::combine_xor(bvect_full1, first, last);    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);    bm::combine_xor(bvect_full1, first, last);    if (bvect_full1.count())    {        cout << "combine_xor count failed!" << endl;        exit(1);    }    }            {    unsigned ids[] = {0, 65536, 65535, 65535*3, 65535*2, 10};    unsigned to_add = sizeof(ids)/sizeof(unsigned);    bvect        bvect_full1;    bvect        bvect_full2;        bvect_mini   bvect_min1(BITVECT_SIZE);    bvect_full1.set_new_blocks_strat(bm::BM_GAP);    bvect_full2.set_new_blocks_strat(bm::BM_GAP);        unsigned bn = 0;    for (unsigned i = 0; i < to_add; ++i)    {        ids[i] = bn;        bvect_full2.set(bn);        bvect_min1.set_bit(bn);        bn += 15;    }        unsigned* first = ids;    unsigned* last = ids + to_add;        bm::combine_xor(bvect_full1, first, last);    CheckVectors(bvect_min1, bvect_full1, BITVECT_SIZE);    bm::combine_xor(bvect_full1, first, last);    if (bvect_full1.count())    {        cout << "combine_xor count failed!" << endl;        exit(1);    }    }}void ComparisonTest(){    cout << "-------------------------------------- ComparisonTest" << endl;    bvect_mini   bvect_min1(BITVECT_SIZE);    bvect_mini   bvect_min2(BITVECT_SIZE);    bvect        bvect_full1;    bvect        bvect_full2;    int res1, res2;    bvect_full1.set_bit(31);     bvect_full2.set_bit(63);     res1 = bvect_full1.compare(bvect_full2);    if (res1 != 1)    {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -