- 
                Notifications
    You must be signed in to change notification settings 
- Fork 13.9k
          Optimize char::encode_utf8
          #145515
        
          New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
  
    Optimize char::encode_utf8
  
  #145515
              
            Conversation
| rustbot has assigned @Mark-Simulacrum. Use  | 
Save a few instructions in `encode_utf8_raw_unchecked` by performing manual CSE.
348abc3    to
    c9ce45c      
    Compare
  
    | Do you have benchmarks or assembly examples showing that this is better? | 
| 
 | 
| It looks like the old impl would use some vector instructions to assemble the 4-byte wide case on newer CPUs (e.g., see https://godbolt.org/z/G457TP9nW) but I'm not convinced that's a good thing and this seems reasonable enough. @bors r+ rollup=iffy | 
…f8, r=Mark-Simulacrum Optimize `char::encode_utf8` Save a few instructions in `encode_utf8_raw_unchecked` by performing manual CSE.
Rollup of 7 pull requests Successful merges: - #144452 (std/sys/fd: Relax `READ_LIMIT` on Darwin) - #145307 (Fix `LazyLock` poison panic message) - #145515 (Optimize `char::encode_utf8`) - #145540 (interpret/allocation: get_range on ProvenanceMap) - #145774 (Remove default opts from config) - #145780 (Do not warn about missing change ID in tarball builds) - #145781 (Remove profile section from Clippy) r? `@ghost` `@rustbot` modify labels: rollup
…f8, r=Mark-Simulacrum Optimize `char::encode_utf8` Save a few instructions in `encode_utf8_raw_unchecked` by performing manual CSE.
…f8, r=Mark-Simulacrum Optimize `char::encode_utf8` Save a few instructions in `encode_utf8_raw_unchecked` by performing manual CSE.
Rollup of 14 pull requests Successful merges: - #143898 (opt-dist: rebuild rustc when doing static LLVM builds) - #144452 (std/sys/fd: Relax `READ_LIMIT` on Darwin) - #145234 (match exhaustiveness diagnostics: show a trailing comma on singleton tuple consructors in witness patterns (and clean up a little)) - #145515 (Optimize `char::encode_utf8`) - #145540 (interpret/allocation: get_range on ProvenanceMap) - #145670 (port `sanitize` attribute to the new parsing infrastructure) - #145713 (next-solver: fix `feature(const_trait_impl)` bootstrap) - #145729 (Remove two duplicated crates) - #145744 (miri: also detect aliasing of in-place argument and return place) - #145774 (Remove default opts from config) - #145781 (Remove profile section from Clippy) - #145782 (rustdoc: make attributes render consistently) - #145787 (citool: cleanup `mismatched_lifetime_syntaxes` warnings) - #145791 (Fix ICE when validating transmuting ZST to inhabited enum) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of #145515 - Kmeakin:km/optimize-char-encode-utf8, r=Mark-Simulacrum Optimize `char::encode_utf8` Save a few instructions in `encode_utf8_raw_unchecked` by performing manual CSE.
| @bors r- | 
Rollup of 14 pull requests Successful merges: - rust-lang/rust#143898 (opt-dist: rebuild rustc when doing static LLVM builds) - rust-lang/rust#144452 (std/sys/fd: Relax `READ_LIMIT` on Darwin) - rust-lang/rust#145234 (match exhaustiveness diagnostics: show a trailing comma on singleton tuple consructors in witness patterns (and clean up a little)) - rust-lang/rust#145515 (Optimize `char::encode_utf8`) - rust-lang/rust#145540 (interpret/allocation: get_range on ProvenanceMap) - rust-lang/rust#145670 (port `sanitize` attribute to the new parsing infrastructure) - rust-lang/rust#145713 (next-solver: fix `feature(const_trait_impl)` bootstrap) - rust-lang/rust#145729 (Remove two duplicated crates) - rust-lang/rust#145744 (miri: also detect aliasing of in-place argument and return place) - rust-lang/rust#145774 (Remove default opts from config) - rust-lang/rust#145781 (Remove profile section from Clippy) - rust-lang/rust#145782 (rustdoc: make attributes render consistently) - rust-lang/rust#145787 (citool: cleanup `mismatched_lifetime_syntaxes` warnings) - rust-lang/rust#145791 (Fix ICE when validating transmuting ZST to inhabited enum) r? `@ghost` `@rustbot` modify labels: rollup
…f8, r=Mark-Simulacrum Optimize `char::encode_utf8` Save a few instructions in `encode_utf8_raw_unchecked` by performing manual CSE.
Save a few instructions in
encode_utf8_raw_uncheckedby performing manual CSE.