【发布时间】:2010-12-23 18:37:57
【问题描述】:
我经常看到如下代码,例如,在内存中表示一个大的位图:
size_t width = 1280;
size_t height = 800;
size_t bytesPerPixel = 3;
size_t bytewidth = ((width * bytesPerPixel) + 3) & ~3; /* Aligned to 4 bytes */
uint8_t *pixelData = malloc(bytewidth * height);
(即,分配为连续内存块的位图,bytewidth 与一定数量的字节对齐,最常见的是 4。)
然后通过以下方式给出图像上的一个点:
pixelData + (bytewidth * y) + (bytesPerPixel * x)
这引出了两个问题:
- 像这样对齐缓冲区是否会对现代处理器的性能产生影响?我应该担心对齐,还是编译器会处理这个问题?
- 如果确实有影响,有人可以指点我一个资源来找到各种处理器的理想字节对齐方式吗?
谢谢。
【问题讨论】:
标签: c performance memory memory-management alignment