csapp2e 家庭作业 6.47

本文介绍了一个针对二维数组处理函数的优化案例,通过采用并行计算技术显著提升了处理速度,将一亿个元素的数组处理时间从16.168秒降低到5.876秒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值