我尝试过的事情:
#include <Rcpp.h>
#include <fstream>
using namespace Rcpp;
using namespace std;
// [[Rcpp::export]]
void write_indval(const char * filename,
const IntegerVector& i,
const NumericVector& x) {
ofstream myFile(filename, ios::out | ios::binary);
const int * pI = i.begin();
const double * pX = x.begin();
int K = i.size();
for (int k = 0; k < K; k++, pI++, pX++) {
myFile.write(reinterpret_cast<const char*>(pI), 4);
myFile.write(reinterpret_cast<const char*>(pX), 8);
}
myFile.close();
}
如果我在R中尝试过
N <- 1e8
i <- sample(1000, N, replace = TRUE)
x <- runif(N)
system.time(
write_indval("test.bin", i, x)
)
写入此1.1 GB数据需要16秒。 写入的数据似乎是我想要的,但我的写入速度为72 MB /秒。 我认为我可以在计算机上以300 MB /秒的速度写入。那么,有人知道此功能有更快的替代方法吗?