很长一段时间,我在读写文件时使用了简单的char[]
缓冲区。
我们假设我有一个非常简单的功能,如:
int f(int fd_in, int fd_out)
{
char buf[4096];
char* bufp = buf;
ssize_t ret, wr;
ret = read(fd_in, buf, sizeof(buf));
/* ... */
while (ret > 0)
{
wr = write(fd_out, bufp, ret);
/* ... */
}
return wr;
}
现在,我更加了解对齐问题,我开始认为这实际上不是最理想的,因为缓冲区将与char
对齐。
为缓冲区使用不同的(更大的)整数类型以获得更强大的'是否合理。对准?它会使读/写更优化吗?福利到底有多远?使用posix_memalign
来获得更多的对齐比积分类型可以实现更好的解决方案吗?
答案 0 :(得分:3)