mirror of
https://github.com/denoland/deno
synced 2024-08-24 02:31:42 +00:00
![Nathan Whitaker](/assets/img/avatar_default.png)
This PR adds a benchmark intended to measure how the LSP handles larger repos, as well as its performance on a more realistic workload. The repo being benchmarked is [deco-cx/apps](https://github.com/deco-cx/apps) which has been vendored along with its dependencies. It's included as a git submodule as its fairly large. The LSP requests used in the benchmark are the actual requests sent by VSCode as I opened, modified, and navigated around a file (to simulate an actual user interaction). The main motivation is to have a more realistic benchmark that measures how we do with a large number of files and dependencies. The improvements made from 1.42 to 1.42.3 mostly improved performance with larger repos, so none of our existing benchmarks showed an improvement. Here are the results for the changes made from 1.42 to 1.42.3 (the new benchmark is the last one listed): **1.42.0** ```test Starting Deno benchmark -> Start benchmarking lsp - Simple Startup/Shutdown (10 runs, mean: 379ms) - Big Document/Several Edits (5 runs, mean: 1142ms) - Find/Replace (10 runs, mean: 51ms) - Code Lens (10 runs, mean: 443ms) - deco-cx/apps Multiple Edits + Navigation (5 runs, mean: 25121ms) <- End benchmarking lsp ``` **1.42.3** ```text Starting Deno benchmark -> Start benchmarking lsp - Simple Startup/Shutdown (10 runs, mean: 383ms) - Big Document/Several Edits (5 runs, mean: 1135ms) - Find/Replace (10 runs, mean: 55ms) - Code Lens (10 runs, mean: 440ms) - deco-cx/apps Multiple Edits + Navigation (5 runs, mean: 11675ms) <- End benchmarking lsp ```
67 lines
2 KiB
JSON
67 lines
2 KiB
JSON
{
|
|
"typescript": {
|
|
"deno": true
|
|
},
|
|
"markdown": {
|
|
"deno": true
|
|
},
|
|
"json": {
|
|
"deno": true
|
|
},
|
|
"exec": {
|
|
"commands": [{
|
|
"command": "rustfmt --config imports_granularity=item",
|
|
"exts": ["rs"]
|
|
}]
|
|
},
|
|
"excludes": [
|
|
".cargo_home",
|
|
".git",
|
|
"cli/bench/testdata/express-router.js",
|
|
"cli/bench/testdata/npm/",
|
|
"cli/bench/testdata/lsp_benchdata/",
|
|
"cli/tsc/dts/lib.d.ts",
|
|
"cli/tsc/dts/lib.scripthost.d.ts",
|
|
"cli/tsc/dts/lib.decorators*.d.ts",
|
|
"cli/tsc/dts/lib.webworker*.d.ts",
|
|
"cli/tsc/dts/lib.dom*.d.ts",
|
|
"cli/tsc/dts/lib.es*.d.ts",
|
|
"cli/tsc/dts/typescript.d.ts",
|
|
"tests/node_compat/test",
|
|
"tests/testdata/file_extensions/ts_with_js_extension.js",
|
|
"tests/testdata/fmt/badly_formatted.json",
|
|
"tests/testdata/fmt/badly_formatted.md",
|
|
"tests/testdata/fmt/badly_formatted.ipynb",
|
|
"tests/testdata/byte_order_mark.ts",
|
|
"tests/testdata/encoding",
|
|
"tests/testdata/fmt/",
|
|
"tests/testdata/lint/glob/",
|
|
"tests/testdata/test/glob/",
|
|
"tests/testdata/import_attributes/json_with_shebang.json",
|
|
"tests/testdata/run/error_syntax_empty_trailing_line.mjs",
|
|
"tests/testdata/run/inline_js_source_map*",
|
|
"tests/testdata/malformed_config/",
|
|
"tests/testdata/npm/registry/",
|
|
"tests/testdata/test/markdown_windows.md",
|
|
"cli/tsc/*typescript.js",
|
|
"gh-pages",
|
|
"target",
|
|
"tests/ffi/tests/test.js",
|
|
"tests/util/std",
|
|
"tests/wpt/suite",
|
|
"third_party",
|
|
"tests/node_compat/runner/TODO.md",
|
|
"tests/node_compat/runner/suite",
|
|
"tests/wpt/runner/expectation.json",
|
|
"tests/wpt/runner/manifest.json",
|
|
"ext/websocket/autobahn/reports"
|
|
],
|
|
"plugins": [
|
|
"https://plugins.dprint.dev/typescript-0.90.1.wasm",
|
|
"https://plugins.dprint.dev/json-0.19.2.wasm",
|
|
"https://plugins.dprint.dev/markdown-0.16.4.wasm",
|
|
"https://plugins.dprint.dev/toml-0.6.1.wasm",
|
|
"https://plugins.dprint.dev/exec-0.4.4.json@c207bf9b9a4ee1f0ecb75c594f774924baf62e8e53a2ce9d873816a408cecbf7"
|
|
]
|
|
}
|