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(resolver): improve cache hit for package.json #585

Merged
merged 1 commit into from
Jul 22, 2023
Merged

perf(resolver): improve cache hit for package.json #585

merged 1 commit into from
Jul 22, 2023

Conversation

Boshen
Copy link
Member

@Boshen Boshen commented Jul 22, 2023

Previously all ancestor paths are checked existence of package.json, they are now cached by linking parent directories.

oxc_resolver is now faster than nodejs_resolver because nodejs_resolver reads all parent directories and try to read their package.json, but oxc_resolver only lazily read then when required.

oxc_resolver is performing less file reads and hashes.

@github-actions github-actions bot added the A-resolver Area - Resolver label Jul 22, 2023
@Boshen
Copy link
Member Author

Boshen commented Jul 22, 2023

Need to add more elements to the benchmark, as well as adding a multi-threaded benchmark.

@github-actions
Copy link
Contributor

Benchmark Resolver

Linux

group               main                                   pr
-----               ----                                   --
nodejs_resolver/    1.03     21.9±0.02µs        ? ?/sec    1.00     21.3±0.50µs        ? ?/sec
oxc_resolver/       4.02     41.8±0.07µs        ? ?/sec    1.00     10.4±0.04µs        ? ?/sec

Windows

group               main                                   pr
-----               ----                                   --
nodejs_resolver/    1.01     38.6±1.09µs        ? ?/sec    1.00     38.2±0.35µs        ? ?/sec
oxc_resolver/       4.15     61.6±0.38µs        ? ?/sec    1.00     14.8±0.13µs        ? ?/sec

@Boshen Boshen changed the title perf(resolver): implement proper file system caching perf(resolver): improve cache hit for package.json Jul 22, 2023
@codecov
Copy link

codecov bot commented Jul 22, 2023

Codecov Report

Merging #585 (cdf1dd8) into main (6310625) will increase coverage by 1.02%.
The diff coverage is 90.52%.

@@            Coverage Diff             @@
##             main     #585      +/-   ##
==========================================
+ Coverage   89.26%   90.29%   +1.02%     
==========================================
  Files         154      193      +39     
  Lines       29760    36940    +7180     
==========================================
+ Hits        26566    33354    +6788     
- Misses       3194     3586     +392     
Impacted Files Coverage Δ
crates/oxc_ast/src/ast/jsx.rs 55.10% <ø> (ø)
crates/oxc_ast/src/ast_kind.rs 27.16% <0.00%> (+10.40%) ⬆️
crates/oxc_ast/src/lib.rs 0.00% <ø> (ø)
crates/oxc_ast/src/span.rs 35.95% <0.00%> (-2.25%) ⬇️
crates/oxc_cli/src/lib.rs 0.00% <0.00%> (ø)
crates/oxc_cli/src/lint/error.rs 0.00% <0.00%> (ø)
crates/oxc_cli/src/lint/isolated_handler.rs 0.00% <0.00%> (ø)
crates/oxc_cli/src/lint/mod.rs 0.00% <0.00%> (-98.45%) ⬇️
crates/oxc_cli/src/lint/module_tree_handler.rs 0.00% <0.00%> (ø)
crates/oxc_cli/src/type_check/mod.rs 0.00% <0.00%> (ø)
... and 121 more

... and 35 files with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@Boshen Boshen merged commit 378505f into main Jul 22, 2023
24 checks passed
@Boshen Boshen deleted the resolver branch July 22, 2023 17:06
renovate bot added a commit that referenced this pull request May 12, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|  |  | lockFileMaintenance | All locks refreshed |
| [napi](https://togithub.com/napi-rs/napi-rs) | workspace.dependencies
| patch | `2.16.4` -> `2.16.6` |
| [napi-derive](https://togithub.com/napi-rs/napi-rs) |
workspace.dependencies | patch | `2.16.3` -> `2.16.4` |
| [num-bigint](https://togithub.com/rust-num/num-bigint) |
workspace.dependencies | patch | `0.4.4` -> `0.4.5` |
| [petgraph](https://togithub.com/petgraph/petgraph) |
workspace.dependencies | patch | `0.6.4` -> `0.6.5` |
| [proc-macro2](https://togithub.com/dtolnay/proc-macro2) |
workspace.dependencies | patch | `1.0.81` -> `1.0.82` |
| [serde](https://serde.rs)
([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies
| patch | `1.0.200` -> `1.0.201` |
| [serde_json](https://togithub.com/serde-rs/json) |
workspace.dependencies | patch | `1.0.116` -> `1.0.117` |
| [trybuild](https://togithub.com/dtolnay/trybuild) |
workspace.dependencies | patch | `1.0.93` -> `1.0.95` |

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### Release Notes

<details>
<summary>napi-rs/napi-rs (napi)</summary>

###
[`v2.16.6`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.16.6)

[Compare
Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.5...napi@2.16.6)

#### What's Changed

- fix(napi): panic when deserializing empty buffer with Rust 1.78 by
[@&#8203;mischnic](https://togithub.com/mischnic) in
[napi-rs/napi-rs#2094

**Full Changelog**:
https://github.com/napi-rs/napi-rs/compare/napi@2.16.5...napi@2.16.6

###
[`v2.16.5`](https://togithub.com/napi-rs/napi-rs/releases/tag/napi%402.16.5)

[Compare
Source](https://togithub.com/napi-rs/napi-rs/compare/napi@2.16.4...napi@2.16.5)

##### What's Changed

- Fix panic in JsArrayBufferValue as_ref/as_mut with Rust 1.78 by
[@&#8203;tronical](https://togithub.com/tronical) in
[napi-rs/napi-rs#2083
- fix(napi): make sure env without exception pending before throw error
by [@&#8203;southorange0929](https://togithub.com/southorange0929) in
[napi-rs/napi-rs#2092

**Full Changelog**:
https://github.com/napi-rs/napi-rs/compare/napi@2.16.4...napi@2.16.5

</details>

<details>
<summary>rust-num/num-bigint (num-bigint)</summary>

###
[`v0.4.5`](https://togithub.com/rust-num/num-bigint/blob/HEAD/RELEASES.md#Release-045-2024-05-06)

[Compare
Source](https://togithub.com/rust-num/num-bigint/compare/num-bigint-0.4.4...num-bigint-0.4.5)

-   [Upgrade to 2021 edition, **MSRV 1.60**][292]
-   [Add `const ZERO` and implement `num_traits::ConstZero`][298]
-   [Add `modinv` methods for the modular inverse][288]
-   [Optimize multiplication with imbalanced operands][295]
-   [Optimize scalar division on x86 and x86-64][236]

**Contributors**: [@&#8203;cuviper](https://togithub.com/cuviper),
[@&#8203;joelonsql](https://togithub.com/joelonsql),
[@&#8203;waywardmonkeys](https://togithub.com/waywardmonkeys)

[236]: https://togithub.com/rust-num/num-bigint/pull/236

[288]: https://togithub.com/rust-num/num-bigint/pull/288

[292]: https://togithub.com/rust-num/num-bigint/pull/292

[295]: https://togithub.com/rust-num/num-bigint/pull/295

[298]: https://togithub.com/rust-num/num-bigint/pull/298

</details>

<details>
<summary>petgraph/petgraph (petgraph)</summary>

###
[`v0.6.5`](https://togithub.com/petgraph/petgraph/blob/HEAD/RELEASES.rst#Version-065-2024-05-06)

[Compare
Source](https://togithub.com/petgraph/petgraph/compare/petgraph@v0.6.4...petgraph@v0.6.5)

\==========================

-   Add rayon support for `GraphMap` (`#573`*, `#615`*)
-   Add `Topo::with_initials` method (`#585`\_)
-   Add logo to the project (`#598`\_)
-   Add Ford-Fulkerson algorithm (`#640`\_)
-   Update `itertools` to 0.12.1 (`#628`\_)
-   Update `GraphMap` to allow custom hash functions (`#623`\_)
-   Fix documentation (`#630`\_)
-   Fix clippy warnings (`#627`\_)
-   (internal) Fix remove old `copyclone` macro (`#601`\_)
-   (internal) Move minimum spanning tree into own module (`#624`\_)

.. \_`#573`:
[petgraph/petgraph#573
.. \_`#615`:
[petgraph/petgraph#615
.. \_`#585`:
[petgraph/petgraph#585
.. \_`#598`:
[petgraph/petgraph#598
.. \_`#640`:
[petgraph/petgraph#640
.. \_`#628`:
[petgraph/petgraph#628
.. \_`#623`:
[petgraph/petgraph#623
.. \_`#630`:
[petgraph/petgraph#630
.. \_`#627`:
[petgraph/petgraph#627
.. \_`#601`:
[petgraph/petgraph#601
.. \_`#624`:
[petgraph/petgraph#624

</details>

<details>
<summary>dtolnay/proc-macro2 (proc-macro2)</summary>

###
[`v1.0.82`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.82)

[Compare
Source](https://togithub.com/dtolnay/proc-macro2/compare/1.0.81...1.0.82)

- Resolve unexpected_cfgs warning
([#&#8203;456](https://togithub.com/dtolnay/proc-macro2/issues/456))

</details>

<details>
<summary>serde-rs/serde (serde)</summary>

###
[`v1.0.201`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.201)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.200...v1.0.201)

- Resolve unexpected_cfgs warning
([#&#8203;2737](https://togithub.com/serde-rs/serde/issues/2737))

</details>

<details>
<summary>serde-rs/json (serde_json)</summary>

###
[`v1.0.117`](https://togithub.com/serde-rs/json/releases/tag/v1.0.117)

[Compare
Source](https://togithub.com/serde-rs/json/compare/v1.0.116...v1.0.117)

- Resolve unexpected_cfgs warning
([#&#8203;1130](https://togithub.com/serde-rs/json/issues/1130))

</details>

<details>
<summary>dtolnay/trybuild (trybuild)</summary>

###
[`v1.0.95`](https://togithub.com/dtolnay/trybuild/releases/tag/1.0.95)

[Compare
Source](https://togithub.com/dtolnay/trybuild/compare/1.0.94...1.0.95)

- Keep long type names in diagnostics so that test output does not vary
depending on the length of the absolute filepath of the crate
([#&#8203;269](https://togithub.com/dtolnay/trybuild/issues/269))

###
[`v1.0.94`](https://togithub.com/dtolnay/trybuild/releases/tag/1.0.94)

[Compare
Source](https://togithub.com/dtolnay/trybuild/compare/1.0.93...1.0.94)

- Resolve unexpected_cfgs warning
([#&#8203;268](https://togithub.com/dtolnay/trybuild/issues/268))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on monday" in timezone
Asia/Shanghai, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/oxc-project/oxc).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-resolver Area - Resolver
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant