GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Improve performance of UseConsistentIndentation even more > another 10% speedup for formatter by bergmeister · Pull Request #1461 · PowerShell/PSScriptAnalyzer

Conversation

@bergmeister

@bergmeister Christoph Bergmeister (bergmeister) commented Apr 24, 2020

Copy link
Copy Markdown
Collaborator

PR Summary

This now reduced the total CPU time of this rule to only from 12% to 2% on a run of a warm run Invoke-Formatter (compared to current master with the 3 recent speed improvements). Improvements will be smaller for smaller scripts as this was tested against PowerShell's build.psm1 3000+ line module (same as with previous PRs), therefore it rather ensures performance scales much better.
Basically, because the rule goes over every token, any looping, inside it, even when it is only performed for each line as in this case, it has a measurable impact (both in the profiler but also actual timings). Therfore making sure we iterate over fewer items in the pipelineAsts list, by having a minimum index, which increases with each line and breaking the loop early if the line number is bigger than the current line. This is possible because the queried function PositionIsEqual only returns pipeline asts on the same line.

PR Checklist

  • PR has a meaningful title
    • Use the present tense and imperative mood when describing your changes
  • Summarized changes
  • Change is not breaking
  • Make sure all .cs, .ps1 and .psm1 files have the correct copyright header
  • Make sure you've added a new test if existing tests do not effectively test the code changed and/or updated documentation
  • This PR is ready to merge and is not Work in Progress.
    • If the PR is work in progress, please add the prefix WIP: to the beginning of the title and remove the prefix when the PR is ready.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

rjmholt reacted with heart emoji
All reactions
  • ❤️ 1 reaction
Christoph Bergmeister
Improve performance of UseConsistentIndentation -more > another 10% s…
b82a46a
…peedup for formatter
@bergmeister Christoph Bergmeister (bergmeister) added Area - Formatter Area - Performance labels Apr 24, 2020
@bergmeister Christoph Bergmeister (bergmeister) assigned Rob Holt (rjmholt) and James Truher (JamesWTruher) and unassigned Rob Holt (rjmholt) and James Truher (JamesWTruher) Apr 24, 2020
@bergmeister
Christoph Bergmeister (bergmeister) requested review from James Truher (JamesWTruher) and Rob Holt (rjmholt) April 24, 2020 19:42
rjmholt
Rob Holt (rjmholt) approved these changes Apr 24, 2020
View reviewed changes

@rjmholt Rob Holt (rjmholt) left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really awesome! Honestly I think removing LINQ use generally from PSSA could provide performance boosts across the board

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
rjmholt
Rob Holt (rjmholt) reviewed Apr 24, 2020
View reviewed changes
Comment thread Rules/UseConsistentIndentation.cs Resolved

Uh oh!

There was an error while loading. Please reload this page.

@bergmeister @rjmholt
Update Rules/UseConsistentIndentation.cs
d7e1ce6
Co-Authored-By: Robert Holt <[email protected]>
@bergmeister

Christoph Bergmeister (bergmeister) commented Apr 24, 2020 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Collaborator Author

Honestly I think removing LINQ use generally from PSSA could provide performance boosts across the board

Now, Linq consumers 18.5% of the CPU (but this include everything including SMA, therefore it is hard to say how much of that stems from PSSA only), so there is some potential but it's not as big as one would think.

image

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bergmeister Christoph Bergmeister (bergmeister) changed the title Improve performance of UseConsistentIndentation -more > another 10% speedup for formatter Improve performance of UseConsistentIndentation even more > another 10% speedup for formatter Apr 24, 2020
@bergmeister
Christoph Bergmeister (bergmeister) merged commit eefa971 into PowerShell:master Apr 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@JamesWTruher James Truher (JamesWTruher) Awaiting requested review from JamesWTruher
1 more reviewer
@rjmholt Rob Holt (rjmholt) rjmholt approved these changes
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

Area - Formatter Area - Performance

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@bergmeister @rjmholt @JamesWTruher
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.