我在 R 中编写了一个 Gibbs 采样器,并决定将其移植到 C 中,看看它是否会更快。我看过的很多页面都声称 C 将快 50 倍,但每次我使用它时,它只比 R 快五到六倍。我的问题是:这是可以预料的,还是我没有使用哪些技巧会使我的 C 代码比这快得多(比如使用矢量化如何加速 R 中的代码)?我基本上采用了代码并用 C 重写了它,用 for 循环替换了矩阵运算,并使所有变量指针。
另外,从 R 程序员的角度来看,有人知道 C 的良好资源吗?Matloff有一本名为The Art of R Programming的好书,但它似乎是从已经了解 C 的人的角度编写的。
此外,当我的 C 代码在 Windows 的标准 R GUI 中运行时,屏幕往往会冻结。它不会崩溃;一旦代码完成运行,它就会解冻,但它会阻止我在 GUI 中做任何其他事情。有人知道我怎么能避免这种情况吗?我正在使用 .C() 调用该函数