Skip to content

Performance overhead for lint with --type-check #843

@huv1k

Description

@huv1k

When comparing linting with --type-check and without, we see really big difference between runtimes. I shared cpu and alloc profiles with @camc314 on Discord. I would expect that times are going to be more close because we should consume same types and there should be some small overhead.

Versions:

"oxlint": "1.43.0",
"oxlint-tsgolint": "0.16.0",

There are no errors and warnings and for size comparison.

pnpm oxlint --type-aware --type-check --tsconfig=libs/nucleus/core/tsconfig.json libs/nucleus/core/src

Found 0 warnings and 0 errors.
Finished in 5.7s on 1078 files with 120 rules using 14 threads.

Here is benchmark between linting with --type-check and without.

Benchmark 1: pnpm oxlint --type-aware --tsconfig=libs/nucleus/core/tsconfig.json libs/nucleus/core/src
  Time (mean ± σ):      1.976 s ±  0.050 s    [User: 8.773 s, System: 0.922 s]
  Range (min … max):    1.938 s …  2.049 s    4 runs

Benchmark 2: pnpm oxlint --type-aware --type-check --tsconfig=libs/nucleus/core/tsconfig.json libs/nucleus/core/src
  Time (mean ± σ):      6.122 s ±  0.088 s    [User: 11.616 s, System: 1.102 s]
  Range (min … max):    6.033 s …  6.207 s    4 runs

Summary
  pnpm oxlint --type-aware --tsconfig=libs/nucleus/core/tsconfig.json libs/nucleus/core/src ran
    3.10 ± 0.09 times faster than pnpm oxlint --type-aware --type-check --tsconfig=libs/nucleus/core/tsconfig.json libs/nucleus/core/src

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Priority

None yet

Effort

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions