ITS <- seq_len(1e2)
A simple comparison of the perfromance of various Appenders
app <- list(
disabled = AppenderFile$new(tempfile()),
plain = AppenderFile$new(tempfile()),
rotating = AppenderFileRotating$new(tempfile()),
rotating_date = AppenderFileRotatingDate$new(tempfile(), cache_backups = FALSE),
rotating_date_cached = AppenderFileRotatingDate$new(tempfile(), cache_backups = TRUE),
json = AppenderJson$new(tempfile())
)
# configure AppenderRotatingDate so that it is forced to
# check the date stamp on each log (the wors-case scenario)
td <- list()
td$rotating <- file.path(tempdir(), "rotating")
td$rotating_date <- file.path(tempdir(), "rotating_date")
td$rotating_date_cached <- file.path(tempdir(), "rotating_date_cached")
lapply(td, dir.create)
# set backup dirs so that they don't conflict
app$rotating$
set_backup_dir(td$rotating)
app$rotating_date$
set_size(-1)$
set_age("1 year")$
set_backup_dir(td$rotating_date)
app$rotating_date_cached$
set_size(-1)$
set_age("1 year")$
set_backup_dir(td$rotating_date_cached)
app$rotating$rotate()
app$rotating_date$rotate()
app$rotating_date$rotate()
app$rotating_date_cached$rotate()
app$rotating_date_cached$rotate()
stopifnot(isTRUE(app$rotating_date_cached$.__enclos_env__$private$bq$cache_backups))
stopifnot(isFALSE(app$rotating_date$.__enclos_env__$private$bq$cache_backups))
stopifnot(nrow(app$rotating$backups) == 0)
stopifnot(nrow(app$rotating_date$backups) == 1)
stopifnot(nrow(app$rotating_date_cached$backups) == 1)
loggers = list(
disabled = get_logger("disabled")$set_propagate(FALSE)$add_appender(app$disabled)$set_threshold(0),
plain = get_logger("plain")$set_propagate(FALSE)$add_appender(app$plain),
rotating = get_logger("rotating")$set_propagate(FALSE)$add_appender(app$rotating),
rotating_date = get_logger("rotating_date")$set_propagate(FALSE)$add_appender(app$rotating_date),
rotating_date_cached = get_logger("rotating_date_cached")$set_propagate(FALSE)$add_appender(app$rotating_date_cached),
json = get_logger("json")$set_propagate(FALSE)$add_appender(app$json)
)
loggers$rotating$info("test")
loggers$rotating$info("test")
loggers$rotating_date$info("test")
exprs <- lapply(
loggers,
function(.x) bquote(for (i in ITS) .(.x)$fatal("a test message"))
)
res <- mark(exprs = exprs, iterations = 100)
#> Warning: Some expressions had a GC in every iteration; so filtering is
#> disabled.
res %>%
dplyr::transmute(
expression = format(expression),
median = format(median),
mem_alloc = format(mem_alloc)
) %>%
knitr::kable()
expression | median | mem_alloc |
---|---|---|
disabled | 1.76ms | 0B |
plain | 135.71ms | 0B |
rotating | 138.37ms | 0B |
rotating_date | 1.07s | 0B |
rotating_date_cached | 269.47ms | 0B |
json | 153.11ms | 0B |
plot(res)
#> Loading required namespace: tidyr
lapply(app, function(a) unlink(a$file))
#> $disabled
#> [1] 0
#>
#> $plain
#> [1] 0
#>
#> $rotating
#> [1] 0
#>
#> $rotating_date
#> [1] 0
#>
#> $rotating_date_cached
#> [1] 0
#>
#> $json
#> [1] 0
lapply(td, function(d) unlink(d, recursive = TRUE))
#> $rotating
#> [1] 0
#>
#> $rotating_date
#> [1] 0
#>
#> $rotating_date_cached
#> [1] 0