https://github.com/r-lib/devoid
A Graphic Device That Does Nothing
https://github.com/r-lib/devoid
graphics rstats
Last synced: 6 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 (about 7 years ago)
- Default Branch: main
- Last Pushed: 2025-04-25T09:15:15.000Z (9 months ago)
- Last Synced: 2025-06-26T20:10:03.200Z (7 months ago)
- Topics: graphics, rstats
- Language: C
- Size: 224 KB
- Stars: 22
- Watchers: 5
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.Rmd
- License: LICENSE
Awesome Lists containing this project
- 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
[](https://github.com/r-lib/devoid/actions)
[](https://github.com/r-lib/devoid/actions/workflows/R-CMD-check.yaml)
[](https://app.codecov.io/gh/r-lib/devoid)
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('pak')
pak::pak('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)
```