qsave_fd {qs} | R Documentation |
qsave_fd
Description
Saves an object to a file descriptor.
Usage
qsave_fd(x, fd,
preset = "high", algorithm = "zstd", compress_level = 4L,
shuffle_control = 15L, check_hash=TRUE)
Arguments
x |
The object to serialize. |
fd |
A file descriptor. |
preset |
One of |
algorithm |
Ignored unless |
compress_level |
Ignored unless For lz4, this number must be > 1 (higher is less compressed). For zstd, a number between |
shuffle_control |
Ignored unless |
check_hash |
Default |
Details
This function serializes and compresses R objects using block compression with the option of byte shuffling.
Value
The total number of bytes written to the file (returned invisibly).
Presets
There are lots of possible parameters. To simplify usage, there are four main presets that are performant over a large variety of data:
-
"fast"
is a shortcut foralgorithm = "lz4"
,compress_level = 100
andshuffle_control = 0
. -
"balanced"
is a shortcut foralgorithm = "lz4"
,compress_level = 1
andshuffle_control = 15
. -
"high"
is a shortcut foralgorithm = "zstd"
,compress_level = 4
andshuffle_control = 15
. -
"archive"
is a shortcut foralgorithm = "zstd_stream"
,compress_level = 14
andshuffle_control = 15
. (zstd_stream
is currently single-threaded only)
To gain more control over compression level and byte shuffling, set preset = "custom"
, in which case the individual parameters algorithm
,
compress_level
and shuffle_control
are actually regarded.
Byte shuffling
The parameter shuffle_control
defines which numerical R object types are subject to byte shuffling. Generally speaking, the more ordered/sequential an
object is (e.g., 1:1e7
), the larger the potential benefit of byte shuffling. It is not uncommon to improve compression ratio or compression speed by
several orders of magnitude. The more random an object is (e.g., rnorm(1e7)
), the less potential benefit there is, even negative benefit is possible.
Integer vectors almost always benefit from byte shuffling, whereas the results for numeric vectors are mixed. To control block shuffling, add +1 to the
parameter for logical vectors, +2 for integer vectors, +4 for numeric vectors and/or +8 for complex vectors.