我查看了sse和mmx指令集,没有关于处理三通道图像的指令。当然,对于许多操作,例如将两个图像平均,可以使用相同的指令。但是,当涉及到解开通道乱序或通过线性变换混合不同的通道时,使用32位图像会更容易。
24位与32位图像的典型图像处理任务的性能特征如何?
我查看了sse和mmx指令集,没有关于处理三通道图像的指令。当然,对于许多操作,例如将两个图像平均,可以使用相同的指令。但是,当涉及到解开通道乱序或通过线性变换混合不同的通道时,使用32位图像会更容易。
24位与32位图像的典型图像处理任务的性能特征如何?
如果您的图像较大且操作简单(如alpha-blending等),则每像素24位更快。
在图像处理中,通常操作非常简单,但执行数百万个操作。因此,从主存到CPU传输数据所用的时间很容易支配算法的性能。
因此,每像素24位的图像比32位/像素的图像具有优势,因为需要移动的数据量减少了四分之一。
编写对24位每像素的图像处理代码是困难的。SSE指令与数据不完全匹配,因此您必须重新排列字节,然后再处理所有不同的对齐方式。
如果您处理的图像很小并适合l1或l2缓存,则情况就不同了,CPU时间将支配性能。在这些情况下,每像素32位执行得更快。