SkillAgentSearch skills...

Lz4lite

Very Fast compression/decompression of in-memory numeric vectors with LZ4

Install / Use

/learn @coolbutuseless/Lz4lite
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<!-- README.md is generated from README.Rmd. Please edit that file -->

lz4lite

<!-- badges: start -->

CRAN R-CMD-check

<!-- badges: end -->

lz4lite provides access to the extremely fast compression in lz4 for performing in-memory compression of any R ojbect.

lz4 code provided with this package is v1.10.0.

What’s in the box

  • For arbitrary R objects
    • lz4_serialize()/lz4_unserialize() serialize and compress any R object.
  • For raw vectors
    • lz4_compress()/lz4_decompress()

Installation

<!-- This package can be installed from CRAN --> <!-- ``` r --> <!-- install.packages('lz4lite') --> <!-- ``` -->

You can install the latest development version from GitHub with:

# install.package('remotes')
remotes::install_github('coolbutuseless/lz4lite')

Pre-built source/binary versions can also be installed from R-universe

install.packages('lz4lite', repos = c('https://coolbutuseless.r-universe.dev', 'https://cloud.r-project.org'))

Basic usage of lz4lite

buf <- lz4_serialize(penguins)
length(buf) # Number of bytes
#> [1] 4877
# compression ratio
length(buf)/length(serialize(penguins, NULL))
#> [1] 0.3392696
head(lz4_unserialize(buf))
#>   species    island bill_len bill_dep flipper_len body_mass    sex year
#> 1  Adelie Torgersen     39.1     18.7         181      3750   male 2007
#> 2  Adelie Torgersen     39.5     17.4         186      3800 female 2007
#> 3  Adelie Torgersen     40.3     18.0         195      3250 female 2007
#> 4  Adelie Torgersen       NA       NA          NA        NA   <NA> 2007
#> 5  Adelie Torgersen     36.7     19.3         193      3450 female 2007
#> 6  Adelie Torgersen     39.3     20.6         190      3650   male 2007

Benchmark

dat <- penguins[sample(nrow(penguins), 10000, T), ]
tmp <- tempfile()


res <- bench::mark(
  lz4lite::lz4_serialize(dat, tmp),
  saveRDS(dat, tmp, compress = FALSE),
  saveRDS(dat, tmp, compress = 'gzip'),
  saveRDS(dat, tmp, compress = 'bzip2'),
  saveRDS(dat, tmp, compress = 'xz'),
  check = FALSE
)

res[, 1:5] |>
  knitr::kable(caption = "Time to serialize data and write to file")

| expression | min | median | itr/sec | mem_alloc | |:--------------------------------------|---------:|---------:|-----------:|----------:| | lz4lite::lz4_serialize(dat, tmp) | 1.03ms | 1.11ms | 852.906215 | 8.63KB | | saveRDS(dat, tmp, compress = FALSE) | 1.34ms | 1.56ms | 594.615649 | 8.63KB | | saveRDS(dat, tmp, compress = “gzip”) | 21.79ms | 22.01ms | 45.296677 | 8.63KB | | saveRDS(dat, tmp, compress = “bzip2”) | 21.74ms | 22.28ms | 44.668393 | 11.58KB | | saveRDS(dat, tmp, compress = “xz”) | 135.38ms | 137.05ms | 7.311095 | 11.58KB |

Time to serialize data and write to file

View on GitHub
GitHub Stars20
CategoryDevelopment
Updated6mo ago
Forks4

Languages

C

Security Score

67/100

Audited on Oct 6, 2025

No findings