📄 mjbitset_test.cpp
字号:
// mjbitset_test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <time.h>
#include <assert.h>
#define _ASSERT(c) assert(c)
//
// must be set when regressing.
//
#define DEBUG_CMJBITSET
#include "mjbitset.h"
#define TESTSIZE 1024
//#define TESTSIZE 32
//#define TESTSIZE 8
#define TESTLOOPS 100000
//
// keep to 0 for regressions otherwise a value a little below TESTSIZE will make the bitsets sparse
//
#define SPARSENESS 0
//
// note if you want to compare performance, then don't define DEBUG_CMJBITSET
//
#if 1
#define BITSET CMJBitset
#else
#define BITSET bitset
#endif
void set_bitset( BITSET<TESTSIZE> &b, int level)
{
for (int i = 0; i < TESTSIZE; i++)
{
if ((rand() % TESTSIZE) > level + SPARSENESS)
{
b.set(i);
}
}
}
void regress_bitset(int bitset1_level,int bitset2_level)
{
BITSET<TESTSIZE> b1;
BITSET<TESTSIZE> b2;
BITSET<TESTSIZE> r;
BITSET<TESTSIZE> r1;
b1.set(6);
r = b1>>6;
set_bitset(b1, bitset1_level);
set_bitset(b2, bitset2_level);
r = b1 & b2;
r = b1 | b2;
r = b1;
r >>= bitset1_level;
r = b1;
r <<= bitset2_level;
r = b2;
r >>= bitset2_level;
r = b2;
r1 = r;
r.flip();
//if (bitset1_level == 29 && bitset2_level == 28)
//{
// printf("here");
//
r <<= bitset1_level;
r1 <<= bitset1_level;
r1 >>= bitset2_level;
r = ~b1;
r &= b2;
r |= b1;
r |= b2;
r.flip();
r.set(bitset1_level,0);
r.set(bitset2_level,0);
}
int main(int argc, char* argv[])
{
int bitset1_level;
int bitset2_level;
clock_t start = clock();
for (int i = 0; i < TESTLOOPS;i++)
{
bitset1_level = rand() % TESTSIZE;
bitset2_level = rand() % TESTSIZE;
regress_bitset(bitset1_level, bitset2_level);
}
clock_t finish = clock();
fprintf(stdout,"Time: %d\n",(finish-start)/CLOCKS_PER_SEC);
char c = fgetc(stdin);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -