Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/r-lib/devoid
A Graphic Device That Does Nothing
https://github.com/r-lib/devoid
graphics rstats
Last synced: 3 months ago
JSON representation
A Graphic Device That Does Nothing
- Host: GitHub
- URL: https://github.com/r-lib/devoid
- Owner: r-lib
- License: other
- Created: 2018-10-23T13:37:59.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-05-01T14:45:00.000Z (about 1 year ago)
- Last Synced: 2024-01-20T15:43:18.242Z (5 months ago)
- Topics: graphics, rstats
- Language: C
- Size: 187 KB
- Stars: 22
- Watchers: 6
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.Rmd
- License: LICENSE
Lists
- awesome-r-dataviz - devoid - A Graphic Device That Does Nothing (suitable for benchmarking functions). (ggplot / Devices)
README
---
output: github_document
---```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```# devoid
[![R-CMD-check](https://github.com/r-lib/devoid/workflows/R-CMD-check/badge.svg)](https://github.com/r-lib/devoid/actions)
This package provides a graphic device that does no operations. This makes it
suitable for benchmarking functions that produce graphics as it removes the
device implementation from the equation. In contrast to the `nulldev()` function
from [R.devices](https://github.com/HenrikBengtsson/R.devices) package this
device is a true device implementation that simply does nothing rather than
calling `pdf()` with a temporary file connection.## Installation
You can install `devoid` with the remotes package:
```{r, eval=FALSE}
# install.packages('remotes')
remotes::install_github('r-lib/devoid')
```## Example
`devoid` provides a single function `void_dev()` which is used much like any
other device:```{r example}
library(devoid)void_dev()
plot(1:10, 1:10)
dev.off()
```Using it we can now see how much drawing time e.g. the png device is responsible
for:```{r}
point_coord <- seq_len(1e4)
void_plot <- function() {
void_dev()
plot(point_coord, point_coord)
dev.off()
NULL
}
png_plot <- function() {
png(tempfile())
plot(point_coord, point_coord)
dev.off()
NULL
}res <- bench::mark(devoid = void_plot(), png = png_plot(), min_iterations = 50)
plot(res)
```