【发布时间】:2016-09-24 01:26:26
【问题描述】:
在不借助 boost 库的情况下读取 10GB 二进制文件并解析每个字节的最简单方法是什么?
它与流、文件、内存映射文件等令人困惑。
我真的只是想要这样的东西:
char* buffer = read(filename, binary);
while(buffer != EOF){
//Read byte
++buffer;
}
性能确实很重要,因为文件大小。
【问题讨论】:
-
std::ifstream 有什么问题?
-
对于简单的块,我总是回退到 C 和无缓冲的 FILE* 处理。
-
内存映射文件最好。
-
@Jichao:为什么说内存映射文件最好?
-
“它对流、文件、内存映射文件等非常混乱。” - 您必须自己尝试并对其进行基准测试,然后在您的平台上使用最快的。库、操作系统、编译器、内存{磁盘、SSD、RAM 等}、DMA 实现等仍在以使某些事情更快的方式发展......我们不再处于可以随意告诉你哪个最快而不看的时代实际实现
标签: c++ performance c++11