about summary refs log tree commit diff
path: root/src/libstd/sys/unix/net.rs
diff options
context:
space:
mode:
authorNicholas Nethercote <nnethercote@mozilla.com>2016-09-26 13:05:54 +1000
committerNicholas Nethercote <nnethercote@mozilla.com>2016-09-26 13:05:54 +1000
commit4eb069c9811bc25d6ef9413de6058e5f14707816 (patch)
treefece2392e07a12086664deddacf3be03748cc175 /src/libstd/sys/unix/net.rs
parent458f41121374291ac1c0d84dd24123d5edcb2967 (diff)
downloadrust-4eb069c9811bc25d6ef9413de6058e5f14707816.tar.gz
rust-4eb069c9811bc25d6ef9413de6058e5f14707816.zip
Don't allocate during default HashSet creation.
The following `HashMap` creation functions don't allocate heap storage for elements.
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This is good, because it's surprisingly common to create a HashMap and never
use it. So that case should be cheap.

However, `HashSet` does not have the same behaviour. The corresponding creation
functions *do* allocate heap storage for the default number of non-zero
elements (which is 32 slots for 29 elements).
```
HashMap::new()
HashMap::default()
HashMap::with_hasher()
```
This commit gives `HashSet` the same behaviour as `HashMap`, by simply calling
the corresponding `HashMap` functions (something `HashSet` already does for
`with_capacity` and `with_capacity_and_hasher`). It also reformats one existing
`HashSet` construction to use a consistent single-line format.

This speeds up rustc itself by 1.01--1.04x on most of the non-tiny
rustc-benchmarks.
Diffstat (limited to 'src/libstd/sys/unix/net.rs')
0 files changed, 0 insertions, 0 deletions