2013-03-10 27 views
5

Sürekli olarak büyük (R) nesnelere seri hale getirmem gerekiyor. Ortaya çıkan ham vektörlerin tekrarlanan çöp toplanmasını önlemek için (profil oluşturulduktan sonra, komut dosyasının çalışma zamanının yarısı gc'da harcanıyor!) R'nin bir bellek arabelleğine doğrudan yazmasını istiyorum - her zaman aynı, Her bir serileştirme işleminden sonra, bu bellek arabelleği üzerinde doğrudan çalışan .C ile bir C işlevi çağırırdım; Beni ilgilendiren bu C fonksiyonunun sonucudur.Bellek bağlantısı (R)

Bu mümkün mü? Ne kadar mantıklı değil?

Şimdiden teşekkürler.

+0

Daha yüksek başlangıç ​​min bellek boyutunu --min-nsize ve --min-vsize olarak ayarlayarak GC etkinliğini azaltabilirsiniz. Ama bu senin problemini çözmeyecek. Sınırlar için işletim sisteminizi kontrol edin (Linux ulimit). – tfb785

cevap

1

Sorununuzu anlayamamış olabilirim, ancak R nesnesini neden Rcpp kullanarak C++ kodunda doğrudan kullanmıyorsunuz? Hiçbir kopya olmayacak ve herhangi bir serileştirmeye ihtiyacınız yok.

+0

Soruyu sorduğumda, Rcpp kullanmıyordum, bu yüzden cevabınızdan çok memnun kalmamıştım. Artık Rcpp kullanıyorum, önerinizin mümkün olan en iyi olduğunu görüyorum. Bu yüzden kabul edildi olarak etiketliyorum! Gelecekteki herhangi bir okuyucu için: ** LEARN RCPP! ** – Elvis