2013-03-10 22 views
5

Devo serializzare ripetutamente (grandi) oggetti R. Per evitare la ripetuta raccolta dei dati grezzi dei vettori grezzi risultanti (dopo la profilazione, risulta che metà del tempo di esecuzione del mio script viene speso in gc!) Vorrei chiedere a R di scrivere direttamente in un buffer di memoria - sempre lo stesso, come dopo ogni serializzazione, chiamerei una funzione C con .C che funzionerebbe direttamente su questo buffer di memoria; è il risultato di questa funzione C che mi interessa.Connessione alla memoria (R)

È possibile? Quanto è irragionevole?

Grazie in anticipo.

+0

È possibile ridurre l'attività del GC impostando una dimensione di memoria min più alta iniziando con --min-nsize e --min-vsize. Ma questo non risolverà il tuo problema. Controlla il tuo sistema operativo per i limiti (Linux ulimit). – tfb785

risposta

1

Potrei non aver capito il tuo problema, ma perché non usi direttamente il tuo oggetto R in codice C++ usando Rcpp. Non ci sarà copia e non avrete bisogno di alcuna serializzazione.

+0

All'epoca in cui ho posto la domanda, non stavo usando Rcpp, quindi non ero molto soddisfatto della risposta. Ora che uso Rcpp, vedo che il tuo suggerimento è il migliore possibile. Quindi lo taggo come accettato! Per qualsiasi futuro lettore: ** IMPARA RCPP! ** – Elvis