diff options
| author | Josh Triplett <josh@joshtriplett.org> | 2021-10-04 19:23:13 -0700 |
|---|---|---|
| committer | Josh Triplett <josh@joshtriplett.org> | 2021-10-04 19:23:13 -0700 |
| commit | c35a700be2aebc0449a16fa1a09d7667aa209230 (patch) | |
| tree | 465ee5605b9f73a543f5232f136a41ecef363b38 | |
| parent | 2b6ed3b675475abc01ce7e68bb75b457f0c85684 (diff) | |
| download | rust-c35a700be2aebc0449a16fa1a09d7667aa209230.tar.gz rust-c35a700be2aebc0449a16fa1a09d7667aa209230.zip | |
Make an initial guess for metadata size to reduce buffer resizes
| -rw-r--r-- | compiler/rustc_metadata/src/locator.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/rustc_metadata/src/locator.rs b/compiler/rustc_metadata/src/locator.rs index b6922e0d72a..5bd9980566b 100644 --- a/compiler/rustc_metadata/src/locator.rs +++ b/compiler/rustc_metadata/src/locator.rs @@ -740,7 +740,9 @@ fn get_metadata_section( // Header is okay -> inflate the actual metadata let compressed_bytes = &buf[header_len..]; debug!("inflating {} bytes of compressed metadata", compressed_bytes.len()); - let mut inflated = Vec::new(); + // Assume the decompressed data will be at least the size of the compressed data, so we + // don't have to grow the buffer as much. + let mut inflated = Vec::with_capacity(compressed_bytes.len()); match FrameDecoder::new(compressed_bytes).read_to_end(&mut inflated) { Ok(_) => rustc_erase_owner!(OwningRef::new(inflated).map_owner_box()), Err(_) => { |
