The goal of profile is to read and write files that contain run time profiling data. Currently, profile supports:
Rprof()
.proto
files written by pprof -proto
, these can also be read by pprof
The data is available to the user for inspection and manipulation in a documented stable data format.
You can install profile from GitHub with:
# install.packages("remotes") remotes::install_github("r-prof/profile")
This simple example converts an .out
file generated by Rprof()
to the .proto
format understood by pprof
.
rprof_path <- tempfile("profile", fileext = ".out") Rprof(rprof_path, line.profiling = TRUE) x <- runif(1e6) res <- vapply(x, function(x) if (x < 0.5) sqrt(x) else x * x, numeric(1)) Rprof(NULL) library(profile) ds <- read_rprof(rprof_path) ds #> Profile data: 28 samples names(ds) #> [1] "meta" "sample_types" "samples" "locations" "functions" #> [6] ".rprof" write_pprof(ds, file.path(tempdir(), "1.pb.gz"))
Please note that the profile project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.