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

Improve stacktrace file path resolving performance by avoiding Pathname #602

Merged
merged 4 commits into from
Jul 14, 2020

Conversation

imjoehaines
Copy link
Contributor

@imjoehaines imjoehaines commented Jun 25, 2020

Goal

This PR improves the performance of resolving relative file paths when gathering the stacktrace for errors, by using File.realpath instead of Pathname.realpath. The two methods are identical, except the Pathname module wraps the return value in a Pathname object. We immediately convert the Pathname object to a string anyway, so there's no gain in using Pathanme for this

We still use Pathname for checking if the file path is relative, as it doesn't have a direct replacement in the File module and I'd like to improve our tests around this area before trying to replace it

Linked issues

Related to #481

Review

For the submitter, initial self-review:

  • Commented on code changes inline explain the reasoning behind the approach
  • Reviewed the test cases added for completeness and possible points for discussion
  • A changelog entry was added for the goal of this pull request
  • Check the scope of the changeset - is everything in the diff required for the pull request?
  • This pull request is ready for:
    • Initial review of the intended approach, not yet feature complete
    • Structural review of the classes, functions, and properties modified
    • Final review

For the pull request reviewer(s), this changeset has been reviewed for:

  • Consistency across platforms for structures or concepts added or modified
  • Consistency between the changeset and the goal stated above
  • Internal consistency with the rest of the library - is there any overlap between existing interfaces and any which have been added?
  • Usage friction - is the proposed change in usage cumbersome or complicated?
  • Performance and complexity - are there any cases of unexpected O(n^3) when iterating, recursing, flat mapping, etc?
  • Concurrency concerns - if components are accessed asynchronously, what issues will arise
  • Thoroughness of added tests and any missing edge cases
  • Idiomatic use of the language

This is a significant performance boost when sending a large number of
errors as it avoids the overhead of creating another Pathname object
@imjoehaines imjoehaines marked this pull request as ready for review July 14, 2020 10:57
@imjoehaines imjoehaines merged commit 0128907 into next Jul 14, 2020
@imjoehaines imjoehaines deleted the use-file-realpath branch July 14, 2020 12:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants