Skip to content
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

perf: Switch to &'static str by default #4223

Merged
merged 6 commits into from Sep 16, 2022
Merged

perf: Switch to &'static str by default #4223

merged 6 commits into from Sep 16, 2022

Commits on Sep 16, 2022

  1. refactor(parser): Track subcommands with Box<str>

    The overall hope is to allow a `&'static str`-only version of clap, so
    we need to move off of `Str` where dynamic strings are required.  We
    need it here for subcommands due to external subcommands.
    
    This had minimal impact on code size (567.2 to 567.5 KiB)
    epage committed Sep 16, 2022
    Copy the full SHA
    1e13109 View commit details
    Browse the repository at this point in the history
  2. refactor(parser): Switch from Box<str> to String

    This is a more familiar type for people and it didn't cost us anything
    (in fact it undid the code size change in the last commit).
    epage committed Sep 16, 2022
    Copy the full SHA
    7ccaebb View commit details
    Browse the repository at this point in the history
  3. Revert "refactor: Remove once_cell dependency"

    This reverts commit c9d883a.
    epage committed Sep 16, 2022
    Copy the full SHA
    10854cd View commit details
    Browse the repository at this point in the history
  4. Copy the full SHA
    bbbaca2 View commit details
    Browse the repository at this point in the history
  5. Revert "fix: Remove once_cell dependency from derive"

    This reverts commit 429143a.
    epage committed Sep 16, 2022
    Copy the full SHA
    fe43f0c View commit details
    Browse the repository at this point in the history
  6. perf: Switch to &'static str by default

    Originally, clap carried a lifetime parameter.  When moving away from
    that, we took the approach that dynamically generated strings are always
    supported and `&'static str` was just an optimization.
    
    The problem is the code size increase from this is dramatic.  So we're
    taking the opposite approach and making dynamic formatting opt-in under
    the `string` feature flag.  When deciding on an implementation, I
    favored the faster one rather than the one with smaller code size since
    small code size can be gotten through other means.
    
    Before: 567.2 KiB, 15.975 µs
    After: 541.1 KiB, 9.7855 µs
    With `string`: 576.6 KiB, 13.016 µs
    epage committed Sep 16, 2022
    Copy the full SHA
    c165b60 View commit details
    Browse the repository at this point in the history