|
发表于 2004-8-4 11:07:07
|
显示全部楼层
测试了一下,不算输出的话,用位域至少还可以提高三分之一左右的效率,同时减少空间占用(只有一个int的空间,不需要数组)。不过写起来实在麻烦,ft,主要是int有32位,一个一个写简直...
干脆用程序完成好了,运行以下程序自动生成测试程序(test0.c)并编译运行,用time(1)计时并显示。
[PHP]
#include <stdio.h>
int main(){
FILE *fp;
int i;
fp=fopen("test0.c","w");
fprintf(fp,"%s","#include <stdio.h>\n");
fprintf(fp,"%s","#include <stdlib.h>\n");
fprintf(fp,"%s","typedef struct{\n");
for(i=0;i<32;i++){
fprintf(fp,"%s%d%s","\tunsigned int a",i,":1;\n");
}
fprintf(fp,"%s","} INT;\n");
fprintf(fp,"%s","int main(){\n");
fprintf(fp,"%s","\tint i,j;\n\tunsigned int n,result;\n\tINT intbit;\n");
fprintf(fp,"%s","\tfor(i=0;i<1000000;i++){\n");
fprintf(fp,"%s","\t\tn=rand();\n\t\tmemcpy(&intbit,&n,sizeof(n));\n");
fprintf(fp,"%s","\t\tresult=");
for(i=0;i<31;i++){
fprintf(fp,"%s%d%s","intbit.a",i,"+");
}
fprintf(fp,"%s","intbit.a31;\n}\n");
fprintf(fp,"%s","\treturn 0;\n}\n");
fclose(fp);
system("gcc -o test0 test0.c");
system("time ./test0");
return 0;
}
[/PHP] |
|