小编jbl*_*jbl的帖子

mmap()与阅读块

我正在开发一个程序,该程序将处理可能大小为100GB或更大的文件.这些文件包含一组可变长度记录.我已经启动并运行了第一个实现,现在我正在寻求提高性能,特别是在输入文件被多次扫描时更有效地进行I/O.

mmap()通过C++的fstream库使用和读取块有经验吗?我想做的是从磁盘读取大块到缓冲区,从缓冲区处理完整记录,然后阅读更多.

mmap()代码可能会变得非常凌乱,因为mmap"d块需要躺在页大小的边界(我的理解)和记录可能潜在般划过页面边界.使用fstreams,我可以寻找记录的开头并再次开始阅读,因为我们不仅限于阅读位于页面大小边界的块.

如何在不实际编写完整实现的情况下决定这两个选项?任何经验法则(例如,mmap()快2倍)或简单测试?

c++ file-io fstream mmap

172
推荐指数
6
解决办法
7万
查看次数

如何使用另一个XMM寄存器条目中的4个相同浮点填充x86 XMM寄存器?

我正在尝试实现一些内联汇编程序(在C/C++代码中)以利用SSE.我想复制和复制值(从XMM寄存器或从内存)到另一个XMM寄存器.例如,假设我在内存中有一些值{1,2,3,4}.我想复制这些值,使xmm1填充{1,1,1,1},xmm2填充{2,2,2,2},依此类推.

查看英特尔参考手册,我找不到执行此操作的说明.我是否只需要使用重复MOVSS和旋转的组合(通过PSHUFD?)?

c c++ x86 sse inline-assembly

12
推荐指数
2
解决办法
6009
查看次数

标签 统计

c++ ×2

c ×1

file-io ×1

fstream ×1

inline-assembly ×1

mmap ×1

sse ×1

x86 ×1