rust/library/core/src/slice
bors 0cd0709f19 Auto merge of #86823 - the8472:opt-chunk-tra, r=kennytm
Optimize unchecked indexing into chunks and chunks_mut

Fixes #53340

```
# BEFORE

$ rustc +nightly -Copt-level=3 -Ccodegen-units=1 -Clto=fat chunks.rs
$ perf stat ./chunks

 Performance counter stats for './chunks':

          3,177.03 msec task-clock                #    1.000 CPUs utilized
                 4      context-switches          #    0.001 K/sec
                 0      cpu-migrations            #    0.000 K/sec
           984,006      page-faults               #    0.310 M/sec
    13,092,199,322      cycles                    #    4.121 GHz                      (83.29%)
       384,543,475      stalled-cycles-frontend   #    2.94% frontend cycles idle     (83.35%)
     7,414,280,722      stalled-cycles-backend    #   56.63% backend cycles idle      (83.38%)
    50,493,980,662      instructions              #    3.86  insn per cycle
                                                  #    0.15  stalled cycles per insn  (83.29%)
     6,625,375,297      branches                  # 2085.396 M/sec                    (83.38%)
         3,087,652      branch-misses             #    0.05% of all branches          (83.31%)

       3.178079469 seconds time elapsed

       2.327156000 seconds user
       0.762041000 seconds sys

# AFTER

$ ./build/x86_64-unknown-linux-gnu/stage1/bin/rustc -Copt-level=3 -Ccodegen-units=1 -Clto=fat chunks.rs
$ perf stat ./chunks

 Performance counter stats for './chunks':

          2,705.76 msec task-clock                #    1.000 CPUs utilized
                 4      context-switches          #    0.001 K/sec
                 0      cpu-migrations            #    0.000 K/sec
           984,005      page-faults               #    0.364 M/sec
    11,156,763,039      cycles                    #    4.123 GHz                      (83.26%)
       342,198,882      stalled-cycles-frontend   #    3.07% frontend cycles idle     (83.37%)
     6,486,263,637      stalled-cycles-backend    #   58.14% backend cycles idle      (83.37%)
    40,553,476,617      instructions              #    3.63  insn per cycle
                                                  #    0.16  stalled cycles per insn  (83.37%)
     6,668,429,113      branches                  # 2464.532 M/sec                    (83.37%)
         3,099,636      branch-misses             #    0.05% of all branches          (83.26%)

       2.706725288 seconds time elapsed

       1.782083000 seconds user
       0.848424000 seconds sys
```
2021-07-08 09:44:52 +00:00
..
iter Rename Iterator::get_unchecked 2020-09-25 19:52:01 +01:00
ascii.rs Perf Experiment: Wait, what if I just skip the trait alias 2021-05-06 11:37:46 -07:00
cmp.rs Remove pointer comparison from slice equality 2020-12-26 06:43:51 +00:00
index.rs Bump slice_index_with_ops_bound_pair to 1.53.0 2021-04-21 22:40:19 +02:00
iter.rs optimize chunks and chunks_mut 2021-07-02 23:14:05 +02:00
memchr.rs Document unsafety in core::slice::memchr 2020-10-05 11:34:03 +02:00
mod.rs Remove "length" doc aliases 2021-06-30 20:28:51 +01:00
raw.rs Convert primitives to use intra-doc links 2021-02-25 20:31:53 -05:00
rotate.rs mv std libs to library/ 2020-07-27 19:51:13 -05:00
sort.rs Use HTTPS links where possible 2021-06-23 16:26:46 -04:00
specialize.rs generalize slice::fill specialization for byte-sized items 2021-03-18 00:25:20 +01:00