Optimize path components iteration on platforms that don't have prefixes#148084
Optimize path components iteration on platforms that don't have prefixes#148084bors merged 3 commits intorust-lang:masterfrom
Conversation
|
rustbot has assigned @Mark-Simulacrum. Use |
|
Nice! I was thinking about this when profiling rust-lang/glob#181, because it was clear that getting just the filename is unnecessary slow just becase |
2ee6afb to
92dabe2
Compare
|
This PR was rebased onto a different master commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
92dabe2 to
d263ab3
Compare
added a benchmark for getting filenames |
|
@bors r+ rollup=iffy |
Rollup of 22 pull requests Successful merges: - #128666 (Add `overflow_checks` intrinsic) - #146305 (Add correct suggestion for multi-references for self type in method) - #147179 ([DebugInfo] Fix container types failing to find template args) - #147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - #148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - #148084 (Optimize path components iteration on platforms that don't have prefixes) - #148126 (Fix rust stdlib build failing for VxWorks) - #148204 (Modify contributor email entries in .mailmap) - #148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - #148333 (constify result unwrap unchecked) - #148539 (Add Allocator proxy impls for Box, Rc, and Arc) - #148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - #148612 (Add note for identifier with attempted hygiene violation) - #148613 (Switch hexagon targets to rust-lld) - #148619 (Enable std locking functions on AIX) - #148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - #148649 (don't completely reset `HeadUsages`) - #148673 (Remove a remnant of `dyn*` from the parser) - #148675 (Remove eslint-js from npm dependencies) - #148680 (Recover `[T: N]` as `[T; N]`) - #148688 (Remove unused argument `features` from `eval_config_entry`) - #148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of #148084 - the8472:prefixless-path-components-iter, r=Mark-Simulacrum Optimize path components iteration on platforms that don't have prefixes ``` OLD path::bench_path_components_iter 140.20ns/iter +/- 6.08 path::bench_path_file_name 57.62ns/iter +/- 1.62 NEW path::bench_path_components_iter 126.74ns/iter +/- 1.46 path::bench_path_file_name 47.48ns/iter +/- 2.49 ```
Rollup of 22 pull requests Successful merges: - rust-lang/rust#128666 (Add `overflow_checks` intrinsic) - rust-lang/rust#146305 (Add correct suggestion for multi-references for self type in method) - rust-lang/rust#147179 ([DebugInfo] Fix container types failing to find template args) - rust-lang/rust#147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - rust-lang/rust#148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - rust-lang/rust#148084 (Optimize path components iteration on platforms that don't have prefixes) - rust-lang/rust#148126 (Fix rust stdlib build failing for VxWorks) - rust-lang/rust#148204 (Modify contributor email entries in .mailmap) - rust-lang/rust#148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - rust-lang/rust#148333 (constify result unwrap unchecked) - rust-lang/rust#148539 (Add Allocator proxy impls for Box, Rc, and Arc) - rust-lang/rust#148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - rust-lang/rust#148612 (Add note for identifier with attempted hygiene violation) - rust-lang/rust#148613 (Switch hexagon targets to rust-lld) - rust-lang/rust#148619 (Enable std locking functions on AIX) - rust-lang/rust#148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - rust-lang/rust#148649 (don't completely reset `HeadUsages`) - rust-lang/rust#148673 (Remove a remnant of `dyn*` from the parser) - rust-lang/rust#148675 (Remove eslint-js from npm dependencies) - rust-lang/rust#148680 (Recover `[T: N]` as `[T; N]`) - rust-lang/rust#148688 (Remove unused argument `features` from `eval_config_entry`) - rust-lang/rust#148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 22 pull requests Successful merges: - rust-lang/rust#128666 (Add `overflow_checks` intrinsic) - rust-lang/rust#146305 (Add correct suggestion for multi-references for self type in method) - rust-lang/rust#147179 ([DebugInfo] Fix container types failing to find template args) - rust-lang/rust#147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - rust-lang/rust#148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - rust-lang/rust#148084 (Optimize path components iteration on platforms that don't have prefixes) - rust-lang/rust#148126 (Fix rust stdlib build failing for VxWorks) - rust-lang/rust#148204 (Modify contributor email entries in .mailmap) - rust-lang/rust#148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - rust-lang/rust#148333 (constify result unwrap unchecked) - rust-lang/rust#148539 (Add Allocator proxy impls for Box, Rc, and Arc) - rust-lang/rust#148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - rust-lang/rust#148612 (Add note for identifier with attempted hygiene violation) - rust-lang/rust#148613 (Switch hexagon targets to rust-lld) - rust-lang/rust#148619 (Enable std locking functions on AIX) - rust-lang/rust#148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - rust-lang/rust#148649 (don't completely reset `HeadUsages`) - rust-lang/rust#148673 (Remove a remnant of `dyn*` from the parser) - rust-lang/rust#148675 (Remove eslint-js from npm dependencies) - rust-lang/rust#148680 (Recover `[T: N]` as `[T; N]`) - rust-lang/rust#148688 (Remove unused argument `features` from `eval_config_entry`) - rust-lang/rust#148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 22 pull requests Successful merges: - rust-lang/rust#128666 (Add `overflow_checks` intrinsic) - rust-lang/rust#146305 (Add correct suggestion for multi-references for self type in method) - rust-lang/rust#147179 ([DebugInfo] Fix container types failing to find template args) - rust-lang/rust#147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - rust-lang/rust#148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - rust-lang/rust#148084 (Optimize path components iteration on platforms that don't have prefixes) - rust-lang/rust#148126 (Fix rust stdlib build failing for VxWorks) - rust-lang/rust#148204 (Modify contributor email entries in .mailmap) - rust-lang/rust#148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - rust-lang/rust#148333 (constify result unwrap unchecked) - rust-lang/rust#148539 (Add Allocator proxy impls for Box, Rc, and Arc) - rust-lang/rust#148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - rust-lang/rust#148612 (Add note for identifier with attempted hygiene violation) - rust-lang/rust#148613 (Switch hexagon targets to rust-lld) - rust-lang/rust#148619 (Enable std locking functions on AIX) - rust-lang/rust#148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - rust-lang/rust#148649 (don't completely reset `HeadUsages`) - rust-lang/rust#148673 (Remove a remnant of `dyn*` from the parser) - rust-lang/rust#148675 (Remove eslint-js from npm dependencies) - rust-lang/rust#148680 (Recover `[T: N]` as `[T; N]`) - rust-lang/rust#148688 (Remove unused argument `features` from `eval_config_entry`) - rust-lang/rust#148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
…-iter, r=Mark-Simulacrum Optimize path components iteration on platforms that don't have prefixes ``` OLD path::bench_path_components_iter 140.20ns/iter +/- 6.08 path::bench_path_file_name 57.62ns/iter +/- 1.62 NEW path::bench_path_components_iter 126.74ns/iter +/- 1.46 path::bench_path_file_name 47.48ns/iter +/- 2.49 ```
Rollup of 22 pull requests Successful merges: - rust-lang#128666 (Add `overflow_checks` intrinsic) - rust-lang#146305 (Add correct suggestion for multi-references for self type in method) - rust-lang#147179 ([DebugInfo] Fix container types failing to find template args) - rust-lang#147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - rust-lang#148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - rust-lang#148084 (Optimize path components iteration on platforms that don't have prefixes) - rust-lang#148126 (Fix rust stdlib build failing for VxWorks) - rust-lang#148204 (Modify contributor email entries in .mailmap) - rust-lang#148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - rust-lang#148333 (constify result unwrap unchecked) - rust-lang#148539 (Add Allocator proxy impls for Box, Rc, and Arc) - rust-lang#148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - rust-lang#148612 (Add note for identifier with attempted hygiene violation) - rust-lang#148613 (Switch hexagon targets to rust-lld) - rust-lang#148619 (Enable std locking functions on AIX) - rust-lang#148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - rust-lang#148649 (don't completely reset `HeadUsages`) - rust-lang#148673 (Remove a remnant of `dyn*` from the parser) - rust-lang#148675 (Remove eslint-js from npm dependencies) - rust-lang#148680 (Recover `[T: N]` as `[T; N]`) - rust-lang#148688 (Remove unused argument `features` from `eval_config_entry`) - rust-lang#148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
|
This PR appears to have triggered the perf regressions observed in rollup at #148721 (comment). |
|
rust-lang/glob#181 (comment) shows some improvements at runtime. |
Rollup of 22 pull requests Successful merges: - rust-lang/rust#128666 (Add `overflow_checks` intrinsic) - rust-lang/rust#146305 (Add correct suggestion for multi-references for self type in method) - rust-lang/rust#147179 ([DebugInfo] Fix container types failing to find template args) - rust-lang/rust#147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - rust-lang/rust#148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - rust-lang/rust#148084 (Optimize path components iteration on platforms that don't have prefixes) - rust-lang/rust#148126 (Fix rust stdlib build failing for VxWorks) - rust-lang/rust#148204 (Modify contributor email entries in .mailmap) - rust-lang/rust#148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - rust-lang/rust#148333 (constify result unwrap unchecked) - rust-lang/rust#148539 (Add Allocator proxy impls for Box, Rc, and Arc) - rust-lang/rust#148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - rust-lang/rust#148612 (Add note for identifier with attempted hygiene violation) - rust-lang/rust#148613 (Switch hexagon targets to rust-lld) - rust-lang/rust#148619 (Enable std locking functions on AIX) - rust-lang/rust#148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - rust-lang/rust#148649 (don't completely reset `HeadUsages`) - rust-lang/rust#148673 (Remove a remnant of `dyn*` from the parser) - rust-lang/rust#148675 (Remove eslint-js from npm dependencies) - rust-lang/rust#148680 (Recover `[T: N]` as `[T; N]`) - rust-lang/rust#148688 (Remove unused argument `features` from `eval_config_entry`) - rust-lang/rust#148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
…-iter, r=Mark-Simulacrum Optimize path components iteration on platforms that don't have prefixes ``` OLD path::bench_path_components_iter 140.20ns/iter +/- 6.08 path::bench_path_file_name 57.62ns/iter +/- 1.62 NEW path::bench_path_components_iter 126.74ns/iter +/- 1.46 path::bench_path_file_name 47.48ns/iter +/- 2.49 ```
Rollup of 22 pull requests Successful merges: - rust-lang#128666 (Add `overflow_checks` intrinsic) - rust-lang#146305 (Add correct suggestion for multi-references for self type in method) - rust-lang#147179 ([DebugInfo] Fix container types failing to find template args) - rust-lang#147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - rust-lang#148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - rust-lang#148084 (Optimize path components iteration on platforms that don't have prefixes) - rust-lang#148126 (Fix rust stdlib build failing for VxWorks) - rust-lang#148204 (Modify contributor email entries in .mailmap) - rust-lang#148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - rust-lang#148333 (constify result unwrap unchecked) - rust-lang#148539 (Add Allocator proxy impls for Box, Rc, and Arc) - rust-lang#148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - rust-lang#148612 (Add note for identifier with attempted hygiene violation) - rust-lang#148613 (Switch hexagon targets to rust-lld) - rust-lang#148619 (Enable std locking functions on AIX) - rust-lang#148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - rust-lang#148649 (don't completely reset `HeadUsages`) - rust-lang#148673 (Remove a remnant of `dyn*` from the parser) - rust-lang#148675 (Remove eslint-js from npm dependencies) - rust-lang#148680 (Recover `[T: N]` as `[T; N]`) - rust-lang#148688 (Remove unused argument `features` from `eval_config_entry`) - rust-lang#148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 22 pull requests Successful merges: - rust-lang/rust#128666 (Add `overflow_checks` intrinsic) - rust-lang/rust#146305 (Add correct suggestion for multi-references for self type in method) - rust-lang/rust#147179 ([DebugInfo] Fix container types failing to find template args) - rust-lang/rust#147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - rust-lang/rust#148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - rust-lang/rust#148084 (Optimize path components iteration on platforms that don't have prefixes) - rust-lang/rust#148126 (Fix rust stdlib build failing for VxWorks) - rust-lang/rust#148204 (Modify contributor email entries in .mailmap) - rust-lang/rust#148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - rust-lang/rust#148333 (constify result unwrap unchecked) - rust-lang/rust#148539 (Add Allocator proxy impls for Box, Rc, and Arc) - rust-lang/rust#148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - rust-lang/rust#148612 (Add note for identifier with attempted hygiene violation) - rust-lang/rust#148613 (Switch hexagon targets to rust-lld) - rust-lang/rust#148619 (Enable std locking functions on AIX) - rust-lang/rust#148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - rust-lang/rust#148649 (don't completely reset `HeadUsages`) - rust-lang/rust#148673 (Remove a remnant of `dyn*` from the parser) - rust-lang/rust#148675 (Remove eslint-js from npm dependencies) - rust-lang/rust#148680 (Recover `[T: N]` as `[T; N]`) - rust-lang/rust#148688 (Remove unused argument `features` from `eval_config_entry`) - rust-lang/rust#148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 22 pull requests Successful merges: - rust-lang/rust#128666 (Add `overflow_checks` intrinsic) - rust-lang/rust#146305 (Add correct suggestion for multi-references for self type in method) - rust-lang/rust#147179 ([DebugInfo] Fix container types failing to find template args) - rust-lang/rust#147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - rust-lang/rust#148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - rust-lang/rust#148084 (Optimize path components iteration on platforms that don't have prefixes) - rust-lang/rust#148126 (Fix rust stdlib build failing for VxWorks) - rust-lang/rust#148204 (Modify contributor email entries in .mailmap) - rust-lang/rust#148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - rust-lang/rust#148333 (constify result unwrap unchecked) - rust-lang/rust#148539 (Add Allocator proxy impls for Box, Rc, and Arc) - rust-lang/rust#148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - rust-lang/rust#148612 (Add note for identifier with attempted hygiene violation) - rust-lang/rust#148613 (Switch hexagon targets to rust-lld) - rust-lang/rust#148619 (Enable std locking functions on AIX) - rust-lang/rust#148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - rust-lang/rust#148649 (don't completely reset `HeadUsages`) - rust-lang/rust#148673 (Remove a remnant of `dyn*` from the parser) - rust-lang/rust#148675 (Remove eslint-js from npm dependencies) - rust-lang/rust#148680 (Recover `[T: N]` as `[T; N]`) - rust-lang/rust#148688 (Remove unused argument `features` from `eval_config_entry`) - rust-lang/rust#148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 22 pull requests Successful merges: - rust-lang/rust#128666 (Add `overflow_checks` intrinsic) - rust-lang/rust#146305 (Add correct suggestion for multi-references for self type in method) - rust-lang/rust#147179 ([DebugInfo] Fix container types failing to find template args) - rust-lang/rust#147743 (Show packed field alignment in mir_transform_unaligned_packed_ref) - rust-lang/rust#148079 (Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`) - rust-lang/rust#148084 (Optimize path components iteration on platforms that don't have prefixes) - rust-lang/rust#148126 (Fix rust stdlib build failing for VxWorks) - rust-lang/rust#148204 (Modify contributor email entries in .mailmap) - rust-lang/rust#148279 (rustc_builtin_macros: rename bench parameter to avoid collisions with user-defined function names) - rust-lang/rust#148333 (constify result unwrap unchecked) - rust-lang/rust#148539 (Add Allocator proxy impls for Box, Rc, and Arc) - rust-lang/rust#148601 (`invalid_atomic_ordering`: also lint `update` & `try_update`) - rust-lang/rust#148612 (Add note for identifier with attempted hygiene violation) - rust-lang/rust#148613 (Switch hexagon targets to rust-lld) - rust-lang/rust#148619 (Enable std locking functions on AIX) - rust-lang/rust#148644 ([bootstrap] Make `--open` option work with `doc src/tools/error_index_generator`) - rust-lang/rust#148649 (don't completely reset `HeadUsages`) - rust-lang/rust#148673 (Remove a remnant of `dyn*` from the parser) - rust-lang/rust#148675 (Remove eslint-js from npm dependencies) - rust-lang/rust#148680 (Recover `[T: N]` as `[T; N]`) - rust-lang/rust#148688 (Remove unused argument `features` from `eval_config_entry`) - rust-lang/rust#148711 (Use the current lint note id when parsing `cfg!()`) r? `@ghost` `@rustbot` modify labels: rollup
Uh oh!
There was an error while loading. Please reload this page.