私はこの問題をグーグルで検索し、R 拡張機能のマニュアルを調べましたが、それに関する情報は見つかりませんでした。
.C を使用して C コードを多数呼び出すかなり大きなプログラムがあります。プログラムの過程で変化しないかなりの量のデータを渡しています。したがって、一度だけ正しいデータ型に強制することにしました。
vec = as.integer(as.vector(vec))。
次に、.C 呼び出しで次のように記述します。
.C('関数', vec = vec)
とは対照的に
.C('関数', vec = as.integer(as.vector(vec)))。
これは、プロファイリングが as.* に少し時間がかかっていることが明らかになったときに行われました。ただし、これを行うと、(数十万回の繰り返しの後) malloc で glibc エラーが発生します。
* glibc が検出されました/usr/lib/R/bin/exec/R: malloc(): メモリ破損: 0x0cabc0d8 * *
最初に強制したオブジェクトがプログラムの過程で変化しないことを見て、これを回避する方法があれば、 as.* 呼び出しを最小限に抑えることができます。
ありがとう、
クリス