#include
#include
#include
using namespace std;
void main()
{
long t1,t2,t;
bitsetbit;
bit.reset();
int *yc=new int[1107568];
for(int i=0;i!=1107568;++i)
yc[i]=0;
t1=clock();
for( i=0;i!=1107568;++i)
if(bit[i])
++yc[i];
t2=clock();
t=t2-t1;
printf("t=%d\n",t);
delete [] yc;
}
for(int i=0;i!=1107568;++i)
yc[i]=0;
这个可以考虑用memset
bitset这个建议你用汇编重写下,这个是缓存/指令集敏感的
你对数组的操作,建议for循环里面都改成用指针操作,这样速度更快,不要用index
时间都耗在if(bit[i]) 里的bit[i]位操作了,有没有其它什么办法更快的处理这种位操作