我正在开发一个R中的包,我想转换为Rcpp以获得更好的性能.我是Rcpp的新手(和C++一样.)我的问题是,如果我用一组参数运行它多次,我编写的Rcpp函数工作正常,但是如果我尝试将它循环遍历许多参数组合,它会弹出内存泄漏并导致R会话中止.
这是R中的代码,它可以很好地适用于我抛出的任何测试:
raw_noise <- function(timesteps, mu, sigma, phi) {
delta <- mu * (1 - phi)
variance <- sigma^2 * (1 - phi^2)
noise <- vector(mode = "double", length = timesteps)
noise[1] <- c(rnorm(1, mu, sigma))
for (i in (1:(timesteps - 1))) {
noise[i + 1] <- delta + phi * noise[i] + rnorm(1, 0, sqrt(variance))
}
return(noise)
}
Run Code Online (Sandbox Code Playgroud)
这是Rcpp中的代码,使用三个Rcpp糖函数(pow,sqrt,rnorm):
NumericVector raw_noise(int timesteps, double mu, double sigma, double phi) {
double delta = mu * (1 - phi); …Run Code Online (Sandbox Code Playgroud)