1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-25 15:29:32 -05:00
A modern runtime for JavaScript and TypeScript. https://deno.com/
Find a file
Marcos Casagrande 4960b6659c
perf(ext/streams): optimize async iterator (#20541)
This PR optimizes `ReadableStream` async iterator

### Benchmarks

```js
Deno.bench("Stream - iterator", async () => {
  const stream = new ReadableStream({
    start(controller) {
      controller.enqueue(new Uint8Array([97]));
      controller.enqueue(new Uint8Array([97]));
      controller.close();
    },
  });

  for await (const chunk of stream) {}
});
```

**main**

`2 chunks`
```
cpu: 13th Gen Intel(R) Core(TM) i9-13900H
runtime: deno 1.36.4 (x86_64-unknown-linux-gnu)

benchmark              time (avg)        iter/s             (min … max)       p75       p99      p995
----------------------------------------------------------------------- -----------------------------
Stream - iterator      12.45 µs/iter      80,295.5   (10.5 µs … 281.12 µs)  12.13 µs  26.71 µs  33.63 µs
```
`20 chunks`

```
benchmark              time (avg)        iter/s             (min … max)       p75       p99      p995
----------------------------------------------------------------------- -----------------------------
Stream - iterator      32.99 µs/iter      30,312.2    (28.13 µs … 1.21 ms)   31.8 µs  81.82 µs 179.93 µs
```
---

**this PR**

`2 chunks`
```
cpu: 13th Gen Intel(R) Core(TM) i9-13900H
runtime: deno 1.36.4 (x86_64-unknown-linux-gnu)

benchmark              time (avg)        iter/s             (min … max)       p75       p99      p995
----------------------------------------------------------------------- -----------------------------
Stream - iterator       9.37 µs/iter     106,700.8   (8.35 µs … 730.71 µs)   9.15 µs  13.12 µs  18.17 µs
```
`20 chunks`
```
benchmark              time (avg)        iter/s             (min … max)       p75       p99      p995
----------------------------------------------------------------------- -----------------------------
Stream - iterator      16.59 µs/iter      60,270.0    (12.08 µs … 1.37 ms)  15.06 µs  83.03 µs 123.52 µs
```
2023-09-17 15:54:40 +00:00
.cargo chore: Add a local-build.toml to make downstream packaging from sourc… (#20236) 2023-08-24 08:46:57 -06:00
.devcontainer fix(devcontainer): Add build deps and update extension in devcontainer (#20467) 2023-09-12 15:33:07 +00:00
.github chore: forward v1.36.4 to main (#20352) 2023-09-01 18:08:58 +00:00
bench_util chore: forward v1.36.4 to main (#20352) 2023-09-01 18:08:58 +00:00
cli fix(lsp): include JSON modules in local import completions (#20536) 2023-09-17 07:50:30 +01:00
ext perf(ext/streams): optimize async iterator (#20541) 2023-09-17 15:54:40 +00:00
runtime refactor: rewrite more ops to op2 macro (#20478) 2023-09-14 23:05:18 +02:00
test_ffi feat(unstable): Improve FFI types (#20215) 2023-08-21 13:36:26 +05:30
test_napi chore(cli): use NPM_CONFIG_REGISTRY for all tests (#20320) 2023-08-29 13:02:54 -06:00
test_util feat(ext/node): http2.connect() API (#19671) 2023-09-15 21:51:25 +02:00
tools chore(test_util): ensure that extra expectations are an error even without a filter (#20483) 2023-09-13 16:09:43 -06:00
.dlint.json chore: update dlint to v0.37.0 for GitHub Actions (#17295) 2023-01-16 17:17:18 +01:00
.dprint.json fix(fmt/markdown): improve ignore comment handling (#20421) 2023-09-08 16:38:42 +00:00
.editorconfig editorconfig: Don't insert final newline in .out files (#1686) 2019-02-07 11:31:49 -05:00
.gitattributes fix(test): support typechecking docs with CRLF line endings (#12748) 2021-11-15 09:58:04 -05:00
.gitignore feat: Add "deno jupyter" subcommand (#20337) 2023-09-16 02:42:09 +02:00
.gitmodules chore: remove third_party submodule (#20201) 2023-08-19 09:56:12 +05:30
.rustfmt.toml chore: update copyright year to 2023 (#17247) 2023-01-02 21:00:42 +00:00
Cargo.lock feat: Add "deno jupyter" subcommand (#20337) 2023-09-16 02:42:09 +02:00
Cargo.toml feat: Add "deno jupyter" subcommand (#20337) 2023-09-16 02:42:09 +02:00
LICENSE.md chore: update copyright year to 2023 (#17247) 2023-01-02 21:00:42 +00:00
README.md docs(contributing): Fix README link to contributing docs (#20526) 2023-09-16 21:54:28 +00:00
Releases.md chore: forward v1.36.4 to main (#20352) 2023-09-01 18:08:58 +00:00
rust-toolchain.toml chore: update to Rust 1.72 (#20258) 2023-08-26 22:04:12 -06:00

Deno

Twitter badge Discord badge YouTube badge

the deno mascot dinosaur standing in the rain

Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.

Features

Install

Shell (Mac, Linux):

curl -fsSL https://deno.land/install.sh | sh

PowerShell (Windows):

irm https://deno.land/install.ps1 | iex

Homebrew (Mac):

brew install deno

Chocolatey (Windows):

choco install deno

Scoop (Windows):

scoop install deno

Build and install from source using Cargo:

# Install the Protobuf compiler
apt install -y protobuf-compiler # Linux
brew install protobuf # macOS

# Build and install Deno
cargo install deno --locked

See deno_install and releases for other options.

Getting Started

Try running a simple program:

deno run https://deno.land/std/examples/welcome.ts

Or setup a simple HTTP server:

Deno.serve((_req) => new Response("Hello, World!"));

More Examples

Additional Resources

Contributing

We appreciate your help!

To contribute, please read our contributing instructions.