私はループ内で1000のシミュレーションを実行しています。私の計算時間は{6.496,7.680,9.464,10.976、...、141.460,145.276,143.148}ですが、すべてのシミュレーションはすべて同じ手順なので、同様の計算時間が必要です。彼らは時間とともにひどく増えています。同じ計算(R)の繰り返しごとに計算時間が増加
私の推測では、一時的な記憶やそれに似たものはありませんが、コンピュータサイエンスについてはほとんど分かりません。私は、メモリを使用しているゴミを削除するループを追加するだけの余分なステップを追加する必要があると思います。これは、この不要な時間の無駄を解決するはずです。
私はこれの解決策はなく、これはあなたが私が使用していたコードが
ptm <- proc.time()
init_pars = c(0.8,0.0175,0.1)
pars=init_pars
n_it = 50
M = matrix(nrow=n_it,ncol=3)
for (i in 1:n_it){
print(c(pars[1],pars[2],pars[3]))
n_it = 10
S=list()
for (j in 1:n_it){
rec_tree = reconst_tree(bt=s2$t,pars=pars,tt=15)
S[[j]] = rec_tree
}
pars = mle_dd_setoftrees(S)
pars = c(pars$lambda,pars$beta,pars$mu)
M[i,]=c(pars[1],pars[2],pars[3])
print(proc.time() - ptm)
ptm <- proc.time()
}
機能であるR.
のためのソリューションを持っていない場合は、なぜ起こるの小さな説明に感謝reconst_treeは独立したシミュレーションを作成し、mle_dd_setoftreesは一連のシミュレーションから見積もりを計算し、次に行列Mに見積もりを格納します。
現在のコードまたは最小限の再現可能な例を投稿してください。詳細はこちら:stackoverflow.com/help/mcve – jav
私の推測では、ループ内のオブジェクトを大きくすることです。 – Roland
どのように結果を保存していますか?ベクトル/リスト全体を割り当てるか、サイズを大きくするすべてのループに効果的にオブジェクト全体をコピーしましたか?また、http://stackoverflow.com/questions/2908822/speed-up-the-loop-operation-in-r –