# performance **Repository Path**: mirrors_typescript-eslint/performance ## Basic Information - **Project Name**: performance - **Description**: Various performance baselines for typescript-eslint. - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-16 - **Last Updated**: 2026-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
Various performance baselines for typescript-eslint.
## Usage You'll need [hyperfine](https://github.com/sharkdp/hyperfine) installed locally, such as with `brew install hyperfine` or `winget install hyperfine`. See [sharkdp/hyperfine#installation](https://github.com/sharkdp/hyperfine#installation). ```shell npm install npm run generate npm run measure ``` You can manually measure individual cases by running `hyperfine ../../node_modules/eslint/bin/eslint.js --ignore-failure --warmup 1`. ### Measured Attributes The `caseEntries` values in `src/data.ts` can be modified to test: - `files`: roughly how many generated files should be linted - `layout`: what rough shape of imports those files exhibit: - `"even"`: a single root-level `index.ts` importing from roughly an even triangle shape of files - `"references"`: a single root-level `tsconfig.json` with project references to a few projects - `"wide"`: one root-level `index.ts` importing from all files in the project - `singleRun`: whether to enable [single-run inference](https://v8--typescript-eslint.netlify.app/packages/parser#disallowautomaticsingleruninference) as a performance boost - `types`: whether to use `parserOptions.project` or `parserOptions.projectService` for typed linting ## Results Right now, `parserOptions.project` with single-run inference outperforms `parserOptions.projectService`. This is a performance issue and we are investigating it as a bug. ```plaintext ┌───────┬───────────────────────┬───────────────────────┐ │ files │ project (even layout) │ service (even layout) │ ├───────┼───────────────────────┼───────────────────────┤ │ 1024 │ '2.371 s ± 0.029 s' │ '2.724 s ± 0.049 s' │ └───────┴───────────────────────┴───────────────────────┘ ``` See [typescript-eslint/typescript-eslint#9571 Performance: parserOptions.projectService no longer outperforms parserOptions.project](https://github.com/typescript-eslint/typescript-eslint/issues/9571) in typescript-eslint. ### Result Measurement Notes - Example measurements taken on an M1 Max Mac Studio with Node.js 22.12.0 - These results are similar across TypeScript versions: 5.0.4, 5.4.5, and 5.5.3 ## Comparisons The [`comparisons/`](./comparisons) directory contains details on more specific comparisons. See each `comparisons/*.md` file for details on what's being measured. ## Traces The [`traces/`](./traces) directory contains more specific traces for investigations. > ✨ You might consider using [0x](https://github.com/davidmarkclements/0x) for nice flamegraph visuals. All comparisons were run on a common shape of linting: 1024 files with the "even" (triangle-shaped) imports layout. ## ContributorsJake Bailey 🤔 |
Josh Goldberg ✨ 🤔 🚇 🚧 📆 🔧 |