我正在C++中为一个键值商店启动一个小项目。我想知道在可伸缩性和性能方面,C++ std流与mmap相比如何。与使用mmap/ using相比,如何在RAM中不适合的文件上使用ifstream::seekg?
发布于 2015-11-29 15:40:55
最终,任何Linux用户地应用程序都在使用系统(2),包括C++ I/O库。
非常小心,mmap和madvise (或lseek + read & posix_fadvise)可能比C++流(使用read和其他系统(2).)更有效;但是滥用系统(例如read-ing太小的缓冲区)可能会带来灾难性的性能
此外,Linux有一个非常好的页缓存 (用于包含最近访问的部分文件数据)。性能也取决于档案系统 (硬件、-SSD和机械硬盘是不同的野兽--计算机)。
也许你不应该重新发明你自己的东西,使用方石岩,或者gdbm,或者雷迪斯,或者mongodb,postgresql,或者梅卡奇等等.
性能和权衡在很大程度上取决于实际的使用(笔记本电脑上的单个4G日志文件与数据中心中的视频或基因组数据的千兆字节不一样)。因此,基准测试(注意,许多像我提到的工具都可以被明智地调优)。
https://stackoverflow.com/questions/33976891
复制相似问题