[CSAPP]Performance Lab实验介绍

该实验旨在优化内存密集型的图像处理代码,关注于旋转和平滑操作。旋转通过矩阵转置和行交换实现,平滑则是计算像素邻域的平均值。实验要求关注内部循环的优化,以降低每像素执行时间(CPE)。建议分析汇编代码并利用优化技巧。编码需遵循ANSIC标准,不使用汇编且不影响时间测量。

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

1 简介

这项实验的目的是优化内存密集型代码,而“图像处理”为我们提供了许多优化函数的例子:

  1. 旋转,将图像逆时针旋转90度。
  2. 平滑,将图像“平滑”或者“模糊”。

1.1 旋转

在这个实验中,我们会把图像表示为一个二维矩阵M,其中Mij 表示矩阵M第(i,j)个像素的值,而像素值是由红,绿,蓝(RGB)组成的。
我们只考虑方形图像,这样只需要用一个字母N就可以表示图像的行数/列数。行和列的编号范围从 0 到 N - 1 。

鉴于以上的表示方式,对图像的旋转操作其实可以抽象为对矩阵的如下操作:

  1. 矩阵的转置。将 Mi,j 和 Mj,i 交换。
  2. 行交换。将第 i 行和第 N - 1 - i 行进行交换

我们用一张图来说明这两种矩阵操作。
在这里插入图片描述
从这张图可以看到,如果我们想旋转某张图片,就可以抽象为先对矩阵进行转置,再对矩阵做行交换。

1.2 平滑

平滑操作简单来说是取一个像素点,再计算出以它为中心周围 3 乘 3 像素的像素平均值,再将像素平均值赋值给这 3 乘 3 区域中的的每一个像素。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值