2013-03-10 48 views
5

我必须重复序列化(大)R对象。为了避免重复垃圾回收生成的原始载体(在分析后,结果发现我的脚本运行时间的一半花在gc!)我想要R直接写入内存缓冲区 - 总是相同的,因为在每次序列化之后,我会调用一个可以直接在此内存缓冲区上工作的C函数.C;这是C函数的结果让我感兴趣。连接到内存(R)

这可能吗?这是多么的不合理?

在此先感谢。

+0

您可以通过使用--min-nsize和--min -vsize设置更高的init分内存大小来降低GC活动。但是这不会解决你的问题。请检查您的操作系统的限制(Linux ulimit)。 – tfb785 2013-06-11 09:31:05

回答

1

我可能没有理解你的问题,但是你为什么不直接在使用Rcpp的C++代码中使用你的R对象。没有副本,你也不需要任何序列化。

+0

当时我问了这个问题,我没有使用Rcpp,所以我对你的回答并不满意。现在我确实使用了Rcpp,我发现你的建议是最好的。所以我把它标记为接受! 致任何未来的读者:** LEARN RCPP!** – Elvis 2014-10-07 13:32:23