## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set(echo = TRUE) knitr::opts_chunk$set(fig.width=8, fig.height=4, fig.align = "center") ## ----------------------------------------------------------------------------- library(brotli) library(ggplot2) # Example data myfile <- file.path(R.home(), "COPYING") x <- readBin(myfile, raw(), file.info(myfile)$size) # The usual suspects y1 <- memCompress(x, "gzip") y2 <- memCompress(x, "bzip2") y3 <- memCompress(x, "xz") y4 <- brotli_compress(x) ## ----------------------------------------------------------------------------- stopifnot(identical(x, memDecompress(y1, "gzip"))) stopifnot(identical(x, memDecompress(y2, "bzip2"))) stopifnot(identical(x, memDecompress(y3, "xz"))) stopifnot(identical(x, brotli_decompress(y4))) ## ----------------------------------------------------------------------------- # Combine data alldata <- data.frame ( algo = c("gzip", "bzip2", "xz (lzma2)", "brotli"), ratio = c(length(y1), length(y2), length(y3), length(y4)) / length(x) ) ggplot(alldata, aes(x = algo, fill = algo, y = ratio)) + geom_bar(color = "white", stat = "identity") + xlab("") + ylab("Compressed ratio (less is better)") ## ----eval = require(microbenchmark)------------------------------------------- # library(microbenchmark) # bm <- microbenchmark( # memDecompress(y1, "gzip"), # memDecompress(y2, "bzip2"), # memDecompress(y3, "xz"), # brotli_decompress(y4), # times = 1000 # ) # # alldata$decompression <- summary(bm)$median # ggplot(alldata, aes(x = algo, fill = algo, y = decompression)) + # geom_bar(color = "white", stat = "identity") + # xlab("") + ylab("Decompression time (less is better)") ## ----eval = require(microbenchmark)------------------------------------------- # library(microbenchmark) # bm <- microbenchmark( # memCompress(x, "gzip"), # memCompress(x, "bzip2"), # memCompress(x, "xz"), # brotli_compress(x), # times = 20 # ) # # alldata$compression <- summary(bm)$median # ggplot(alldata, aes(x = algo, fill = algo, y = compression)) + # geom_bar(color = "white", stat = "identity") + # xlab("") + ylab("Compression time (less is better)")