PowerShell icon indicating copy to clipboard operation
PowerShell copied to clipboard

Refactor Escape() method

Open iSazonov opened this issue 3 years ago • 2 comments

PR Summary

Moved from #18154

Exclude using LINQ and Utils.Separators.StarOrQuestion (the const is not removed in the PR to avoid merge conflitcs).


BenchmarkDotNet=v0.13.2, OS=Windows 10 (10.0.19044.2006/21H2/November2021Update)
Intel Core i5-2410M CPU 2.30GHz (Sandy Bridge), 1 CPU, 4 logical and 2 physical cores
.NET SDK=7.0.100-rc.1.22431.12
  [Host]     : .NET 7.0.0 (7.0.22.42610), X64 RyuJIT AVX
  DefaultJob : .NET 7.0.0 (7.0.22.42610), X64 RyuJIT AVX


Method Categories path Mean Ratio Code Size Allocated Alloc Ratio
Orig_Escape_All All c:\ 15.45 ns 1.00 511 B - NA
New_Escape_All All c:\ 13.64 ns 0.88 516 B - NA
Orig_Escape_All All c:\* 48.22 ns 1.00 511 B 32 B 1.00
New_Escape_All All c:\* 35.58 ns 0.75 516 B 32 B 1.00
Orig_Escape_All All c:\us(...)ents\ [24] 74.39 ns 1.00 511 B - NA
New_Escape_All All c:\us(...)ents\ [24] 72.20 ns 0.97 516 B - NA
Orig_Escape_All All c:\us(...)nts\ [25]* 115.30 ns 1.00 511 B 80 B 1.00
New_Escape_All All c:\us(...)nts\* [25] 98.49 ns 0.85 516 B 80 B 1.00
Old_Escape_Brackets Brackets c:\ 15.58 ns ? 511 B - ?
New_Escape_Brackets Brackets c:\ 12.48 ns ? 519 B - ?
Old_Escape_Brackets Brackets c:\[ 48.80 ns ? 511 B 32 B ?
New_Escape_Brackets Brackets c:\[ 34.37 ns ? 519 B 32 B ?
Old_Escape_Brackets Brackets c:\us(...)ents\ [24] 75.06 ns ? 511 B - ?
New_Escape_Brackets Brackets c:\us(...)ents\ [24] 60.08 ns ? 519 B - ?
Old_Escape_Brackets Brackets c:\us(...)nts\[ [25] 116.00 ns ? 511 B 80 B ?
New_Escape_Brackets Brackets c:\us(...)nts\[ [25] 86.48 ns ? 519 B 80 B ?

PR Context

PR Checklist

iSazonov avatar Oct 06 '22 12:10 iSazonov

This PR has 41 quantified lines of changes. In general, a change size of upto 200 lines is ideal for the best PR experience!


Quantification details

Label      : Extra Small
Size       : +20 -21
Percentile : 16.4%

Total files changed: 3

Change summary by file extension:
.cs : +20 -21

Change counts above are quantified counts, based on the PullRequestQuantifier customizations.

Why proper sizing of changes matters

Optimal pull request sizes drive a better predictable PR flow as they strike a balance between between PR complexity and PR review overhead. PRs within the optimal size (typical small, or medium sized PRs) mean:

  • Fast and predictable releases to production:
    • Optimal size changes are more likely to be reviewed faster with fewer iterations.
    • Similarity in low PR complexity drives similar review times.
  • Review quality is likely higher as complexity is lower:
    • Bugs are more likely to be detected.
    • Code inconsistencies are more likely to be detected.
  • Knowledge sharing is improved within the participants:
    • Small portions can be assimilated better.
  • Better engineering practices are exercised:
    • Solving big problems by dividing them in well contained, smaller problems.
    • Exercising separation of concerns within the code changes.

What can I do to optimize my changes

  • Use the PullRequestQuantifier to quantify your PR accurately
    • Create a context profile for your repo using the context generator
    • Exclude files that are not necessary to be reviewed or do not increase the review complexity. Example: Autogenerated code, docs, project IDE setting files, binaries, etc. Check out the Excluded section from your prquantifier.yaml context profile.
    • Understand your typical change complexity, drive towards the desired complexity by adjusting the label mapping in your prquantifier.yaml context profile.
    • Only use the labels that matter to you, see context specification to customize your prquantifier.yaml context profile.
  • Change your engineering behaviors
    • For PRs that fall outside of the desired spectrum, review the details and check if:
      • Your PR could be split in smaller, self-contained PRs instead
      • Your PR only solves one particular issue. (For example, don't refactor and code new features in the same PR).

How to interpret the change counts in git diff output

  • One line was added: +1 -0
  • One line was deleted: +0 -1
  • One line was modified: +1 -1 (git diff doesn't know about modified, it will interpret that line like one addition plus one deletion)
  • Change percentiles: Change characteristics (addition, deletion, modification) of this PR in relation to all other PRs within the repository.


Was this comment helpful? :thumbsup:  :ok_hand:  :thumbsdown: (Email) Customize PullRequestQuantifier for this repository.

This pull request has been automatically marked as Review Needed because it has been there has not been any activity for 7 days. Maintainer, please provide feedback and/or mark it as Waiting on Author

ghost avatar Oct 14 '22 14:10 ghost