Defines a data structure for profiler data, and methods to read and write from the 'Rprof' and 'pprof' file formats.
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:
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: 33 samplesnames(ds)#> [1] "meta" "sample_types" "samples" "locations"#> [5] "functions" ".rprof"write_pprof(ds, file.path(tempdir(), "1.pb.gz"))
Initial release. Exported functions:
read_rprof(path, ..., version = "1.0")
and write_rprof(x, path)
for reading files generated by Rprof()
and writing compatible files.
read_pprof(path, ..., version = "1.0")
and write_pprof(x, path)
for reading and writing files understood by pprof
.
validate_profile(x)
for validating profile data, called by the readers and writers.