重複の可能性:
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
(Linuxで)上記を実行するために使用する簡単なC++コードを誰か教えてもらえますか?
編集: 事例
#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();
}