可能重复:
用 C++ 快速编写二进制文件
我在内存中有大量无符号 32 位整数(15 亿个条目)。我需要将它们写入文件并将它们读回主内存。
现在,我使用:
ofstream ofs;
ofs.open(filename);
for (uint64_t i = 0 ; i < 1470000000 ; i++)
ofs << integers << " " ;
和
ifstream ifs;
ifs.open(filename);
for (uint64_t i = 0 ; i < 1470000000 ; i++)
ifs >> integers ;
这需要几分钟来执行。任何人都可以帮助我,是否有任何图书馆方法可以更快地做到这一点?或任何建议,以便我可以进行性能测试?任何人都可以向我展示一些mmap
用于执行上述操作的简单 C++ 代码(在 Linux 上)吗?
编辑:示例案例
#include<iostream>
#include <stdint.h>
#include <cstdio>
#include <cstdlib>
#include <sstream>
using namespace std;
main()
{
uint32_t* ele = new uint32_t [100] ;
for(int i = 0; i < 100 ; i++ )
ele[i] = i ;
for(int i = 0; i < 100 ; i++ ){
if(ele[i] < 20)
continue ;
else
// write ele[i] to file
;
}
for(int i = 0; i < 100 ; i++ ){
if(ele[i] < 20)
continue ;
else
// read number from file
// ele[i] = number * 10 ;
;
}
std::cin.get();
}