Skip to content

Commit d12ad87

Browse files
committed
Use a multi-threaded xz encoder
1 parent 5ba3d18 commit d12ad87

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ rayon = "1.0"
1616
tar = "0.4.13"
1717
walkdir = "2"
1818
xz2 = "0.1.4"
19+
num_cpus = "1"
1920

2021
[dependencies.clap]
2122
features = ["yaml"]

src/tarballer.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@ impl Tarballer {
4848
let gz = GzEncoder::new(create_new_file(tar_gz)?, flate2::Compression::best());
4949

5050
// Prepare the `.tar.xz` file.
51-
let xz = XzEncoder::new(create_new_file(tar_xz)?, 6);
51+
let stream = xz2::stream::MtStreamBuilder::new()
52+
.threads(num_cpus::get() as u32)
53+
.preset(6)
54+
.encoder()?;
55+
let xz = XzEncoder::new_stream(create_new_file(tar_xz)?, stream);
5256

5357
// Write the tar into both encoded files. We write all directories
5458
// first, so files may be directly created. (See rust-lang/rustup.rs#1092.)

0 commit comments

Comments
 (0)