void col_convert(int *G,int dim)
{
int i,j;
int im,jm;
for(i=0;i<dim-3;i+=4)
{
im = i*dim;
for(j=0;j<dim-3;j+=4)
{
jm = j*dim;
G[jm+i]|=G[jm+i]||G[im+j];
G[jm+i+1]|=G[jm+i+1]||G[im+dim+j];
G[jm+i+2]|=G[jm+i+2]||G[im+2*dim+j];
G[jm+i+3]|=G[jm+i+3]||G[im+3*dim+j];
G[jm+dim+i]|=G[jm+dim+i]||G[im+j+1];
G[jm+dim+i+1]|=G[jm+dim+i+1]||G[im+dim+j+1];
G[jm+dim+i+2]|=G[jm+dim+i+2]|| G[im+2*dim+j+1];
G[jm+dim+i+3]|=G[jm+dim+i+3]||G[im+3*dim+j+1];
G[jm+2*dim+i]|=G[jm+2*dim+i]||G[im+j+2];
G[jm+2*dim+i+1]|=G[jm+2*dim+i+1]||G[im+dim+j+2];
G[jm+2*dim+i+2]|=G[jm+2*dim+i+2]||G[im+2*dim+j+2];
G[jm+2*dim+i+3]|=G[jm+2*dim+i+3]||G[im+3*dim+j+2];
G[jm+3*dim+i]|=G[jm+3*dim+i]||G[im+dim+j+3];
G[jm+3*dim+i+1]|=G[jm+3*dim+i+1]||G[im+dim+j+3];
G[jm+3*dim+i+2]|=G[jm+3*dim+i+2]||G[im+2*dim+j+3];
G[jm+3*dim+i+3]|=G[jm+3*dim+i+3]||G[im+3*dim+j+3];
}
}
for(;i<dim;i++)
for(;j<dim;j++)
G[j*dim+i]|=G[j*dim+i]||G[i*dim+j];
}
1亿个元素的数组,原来执行时间为 16.168s
优化后平均执行时间为 5.876s