2013-03-10 52 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