Skip to content

Commit

Permalink
Make AVG_PART_LENGTH a power of 2
Browse files Browse the repository at this point in the history
I seem to recall that in general, it's best to request an allocation
with a size that's a power of 2. The low estimate of 5 was probably a
little too low as well.
  • Loading branch information
camelid committed Jan 14, 2022
1 parent 8f59eb6 commit cef250d
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/librustdoc/html/url_parts_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,17 @@ impl UrlPartsBuilder {

/// This is just a guess at the average length of a URL part,
/// used for [`String::with_capacity`] calls in the [`FromIterator`]
/// and [`Extend`] impls.
/// and [`Extend`] impls, and for [estimating item path lengths].
///
/// This is intentionally on the lower end to avoid overallocating.
const AVG_PART_LENGTH: usize = 5;
/// The value `8` was chosen for two main reasons:
///
/// * It seems like a good guess for the average part length.
/// * jemalloc's size classes are all multiples of eight,
/// which means that the amount of memory it allocates will often match
/// the amount requested, avoiding wasted bytes.
///
/// [estimating item path lengths]: estimate_item_path_byte_length
const AVG_PART_LENGTH: usize = 8;

/// Estimate the number of bytes in an item's path, based on how many segments it has.
///
Expand Down

0 comments on commit cef250d

Please sign in to comment.