Rcpp 的 lineprof 等价物
lineprof equivalent for Rcpp
R 中的 lineprof
包对于分析函数的哪些部分占用时间和 allocate/free 内存非常有用。
Rcpp 是否有 lineprof()
等价物?
我目前使用 std::chrono::steady_clock
等从 Rcpp
函数中获取块计时。备择方案? Rstudio IDE
在这里提供一些帮助吗?
查看对高性能计算的任何体面介绍,例如来自 my talks page(较旧)演示文稿的一些幻灯片,其中包括 KCacheGrind(Valgrind 的 KDE 前端的一部分)以及Google 性能工具。
从更抽象的意义上讲,您需要接受这样一个事实,即 C++ != R 并且并非所有工具都有相同的对应项。特别是 Rprof
,几个用于分析的 CRAN 包构建在其之上的 R 分析器基于 R 被 解释 的事实。 C++ 不是,所以情况会有所不同。但是分析编译与编译和调试一样古老,所以你会发现很多教程。
补充@Dirk的回答...
如果您在 OS X 上工作,Time Profiler Instrument, part of Apple's Instruments 检测工具集是一个 优秀的 采样分析器。
只是为了修正想法:
采样分析器可以让您回答以下问题:我的程序执行最多的代码路径是什么?
一个(完整的)缓存分析器可以让您回答这个问题,我的程序中最常执行的代码路径是什么?
这些是不同的问题——您最热门的代码路径可能已经足够优化,即使在该路径中执行的指令总数非常多,执行它们所需的时间可能相对较少低。
如果您想使用工具分析 R 包中使用的 C++ 代码/例程,最简单的方法是:
- 创建一个目标,指向您的 R 可执行文件,并使用适当的命令行参数 运行 您希望分析的任何函数:
- 将命令行参数设置为 运行 将执行 C++ 例程的代码 -- 例如,此代码 运行s
Rcpp:::test()
,以检测所有 Rcpp
测试代码:
- 单击红色的大录制按钮,开始吧!
我会将理解仪器 + 时序分析器的其余说明留给你的 google-fu + 文档,但是(如果你在 OS X 上)你应该注意这个工具。
R 中的 lineprof
包对于分析函数的哪些部分占用时间和 allocate/free 内存非常有用。
Rcpp 是否有 lineprof()
等价物?
我目前使用 std::chrono::steady_clock
等从 Rcpp
函数中获取块计时。备择方案? Rstudio IDE
在这里提供一些帮助吗?
查看对高性能计算的任何体面介绍,例如来自 my talks page(较旧)演示文稿的一些幻灯片,其中包括 KCacheGrind(Valgrind 的 KDE 前端的一部分)以及Google 性能工具。
从更抽象的意义上讲,您需要接受这样一个事实,即 C++ != R 并且并非所有工具都有相同的对应项。特别是 Rprof
,几个用于分析的 CRAN 包构建在其之上的 R 分析器基于 R 被 解释 的事实。 C++ 不是,所以情况会有所不同。但是分析编译与编译和调试一样古老,所以你会发现很多教程。
补充@Dirk的回答...
如果您在 OS X 上工作,Time Profiler Instrument, part of Apple's Instruments 检测工具集是一个 优秀的 采样分析器。
只是为了修正想法:
采样分析器可以让您回答以下问题:我的程序执行最多的代码路径是什么?
一个(完整的)缓存分析器可以让您回答这个问题,我的程序中最常执行的代码路径是什么?
这些是不同的问题——您最热门的代码路径可能已经足够优化,即使在该路径中执行的指令总数非常多,执行它们所需的时间可能相对较少低。
如果您想使用工具分析 R 包中使用的 C++ 代码/例程,最简单的方法是:
- 创建一个目标,指向您的 R 可执行文件,并使用适当的命令行参数 运行 您希望分析的任何函数:
- 将命令行参数设置为 运行 将执行 C++ 例程的代码 -- 例如,此代码 运行s
Rcpp:::test()
,以检测所有Rcpp
测试代码:
- 单击红色的大录制按钮,开始吧!
我会将理解仪器 + 时序分析器的其余说明留给你的 google-fu + 文档,但是(如果你在 OS X 上)你应该注意这个工具。