deno/cli
Nathan Whitaker 422cff1f24
chore(lsp): Add benchmark for performance on a large real-world repo (#23395)
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
```
2024-04-16 12:26:51 -07:00
..
args fix: add DENO_FUTURE to deno --help (#23368) 2024-04-17 02:58:48 +10:00
bench chore(lsp): Add benchmark for performance on a large real-world repo (#23395) 2024-04-16 12:26:51 -07:00
cache perf: do not clone swc Program when transpiling (#23365) 2024-04-14 17:15:17 -04:00
js chore: update references to deno_std to use JSR (#23239) 2024-04-10 17:26:35 -04:00
lsp fix(lsp): slice strings by byte index in code actions (#23387) 2024-04-16 01:07:32 +02:00
napi chore: forward v1.42.4 commit to main (#23394) 2024-04-16 02:41:59 +00:00
npm fix(check): cache bust when changing nodeModulesDir setting (#23355) 2024-04-15 18:58:04 -04:00
ops chore: upgrade deno_core to 0.274.0 (#23344) 2024-04-12 21:45:38 +02:00
schemas fix(config): remove pkg name example and add pattern to schema (#22813) 2024-03-08 23:13:25 +00:00
standalone FUTURE: override byonm with nodeModulesDir setting (#23222) 2024-04-05 10:34:51 -04:00
tools fix(cli): TestEventSender should be !Clone (#23405) 2024-04-16 12:54:50 -06:00
tsc fix(lsp): improved cjs tracking (#23374) 2024-04-15 17:50:52 -04:00
util chore: update to Rust 1.77.2 (#23262) 2024-04-10 22:08:23 +00:00
auth_tokens.rs fix(cli): Add IP address support to DENO_AUTH_TOKEN (#22297) 2024-02-06 19:45:40 +01:00
build.rs chore: remove repetitive words (#23341) 2024-04-12 08:33:43 -06:00
Cargo.toml chore: forward v1.42.4 commit to main (#23394) 2024-04-16 02:41:59 +00:00
cdp.rs refactor(tools/repl): reorganize code (#21810) 2024-01-05 16:14:58 +01:00
deno.ico fix(cli): add icon and metadata to deno.exe on Windows (#6693) 2020-07-15 21:54:38 +02:00
emit.rs perf: do not clone swc Program when transpiling (#23365) 2024-04-14 17:15:17 -04:00
entitlements.plist chore: start codesigning mac release builds (#21303) 2023-11-23 15:30:26 -07:00
errors.rs fix: upgrade to deno_ast 0.33 (#22341) 2024-02-09 01:40:26 +00:00
factory.rs fix(inspector): don't panic if port is not free (#22745) 2024-04-12 01:17:10 +02:00
file_fetcher.rs fix: handle cache body file not existing when using etag (#22931) 2024-03-15 09:57:24 -04:00
graph_util.rs fix: upgrade deno_ast related crates (#23187) 2024-04-11 23:00:17 +00:00
http_util.rs chore: update copyright to 2024 (#21753) 2024-01-01 19:58:21 +00:00
integration_tests_runner.rs chore: continue tests/ re-org (#22396) 2024-02-12 17:13:14 -07:00
js.rs chore(cli): remove problematic snapshot test (#22722) 2024-03-05 19:11:33 -07:00
jsr.rs fix(jsr): exclude yanked versions from 'deno add' and completions (#23113) 2024-03-28 19:02:07 +00:00
main.rs refactor: cleanup main entrypoint (#23145) 2024-03-31 10:58:19 -04:00
mainrt.rs refactor: cleanup main entrypoint (#23145) 2024-03-31 10:58:19 -04:00
module_loader.rs chore: upgrade deno_core to 0.272.0 (#23022) 2024-03-21 13:57:32 -07:00
node.rs feat(node): load ES modules defined as CJS (#22945) 2024-03-21 11:35:51 -07:00
README.md docs(cli): do not need gen doc for cli (#17260) 2023-01-04 13:19:58 +01:00
resolver.rs fix(lsp): improved cjs tracking (#23374) 2024-04-15 17:50:52 -04:00
version.rs chore: update copyright to 2024 (#21753) 2024-01-01 19:58:21 +00:00
worker.rs fix(ext/node): dispatch beforeExit/exit events irrespective of listeners (#23382) 2024-04-16 13:45:41 +00:00

Deno CLI Crate

crates

This provides the actual deno executable and the user-facing APIs.

The deno crate uses the deno_core to provide the executable.