いくつかの背景:変更内部機能
私はパッケージHMR
から多くのことを機能HMR
を使用する必要があります。残念ながら、この機能は非常に遅いです。 (HMR
は本質的にフィッティング関数であり、できるだけ頑強に設計されているため、効率の欠如の原因の1つです)。関数HMR
は関数HMR::.HMR.fit1
を呼び出し、実際のフィッティングを行います。 Rprof
を使用効率についての主な問題はlsfit
の使用であることがわかっています。したがって.HMR.fit1
のコードをlsfit
によって使用されるC関数を直接呼び出すように変更しました。これはすべてのオーバーヘッドがlsfit
でなくても、大幅に高速化するはずです。
HMR::.HMR.fit1
を私の変更された機能に置き換えて、同じ結果が得られ、どれくらいのスピードを得たら、HMR
をテストしたいと思います。
は、私はこれを実行しようとしました:
mod.fun <- function(<many args>) {
<a lot of code>
}
environment(mod.fun) <- environment(.HMR.fit1)
.HMR.fit1 <- mod.fun
しかし、HMR::.HMR.fit1
はこれを行うことによって変更されていないと明らかにHMR::HMR
は私の修正フィッティング関数を使用していません。ソースからパッケージをビルドせずに自分の望むものを実現する方法はありますか?私の(Windows)コンピュータのユーザ権限制限のためにできないものはありますか?
私の解決策は、HMR::HMR
のコードをコピーすることですが、もっと便利な解決方法があると思います。
古いものを変更するのではなく新しい関数を追加する場合は、このソリューションを使用してください:http://stackoverflow.com/a/3402159/684229 – TMS