Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tech(engines): Add rust-toolchain #4611

Closed
wants to merge 5 commits into from
Closed

tech(engines): Add rust-toolchain #4611

wants to merge 5 commits into from

Conversation

Druue
Copy link
Contributor

@Druue Druue commented Dec 22, 2023

We could also specify it as the following if we want to pin a specific version like we do in nix.

channel = "1.75.0"

But we currently also use channel = "stable" for the toolchain in prisma-schema-wasm

Rustup Book Info

@Druue Druue requested a review from a team as a code owner December 22, 2023 17:52
@Druue Druue requested review from laplab and Weakky and removed request for a team December 22, 2023 17:52
@Druue Druue added this to the 5.8.0 milestone Dec 22, 2023
@Druue Druue requested a review from aqrln December 22, 2023 17:52
@Druue Druue added the kind/tech A technical change. label Dec 22, 2023
@Druue Druue self-assigned this Dec 22, 2023
Copy link
Contributor

github-actions bot commented Dec 22, 2023

WASM Size

Engine This PR Base branch Diff
WASM 2.744MiB 2.744MiB 0.000B
WASM (gzip) 1.006MiB 1.006MiB 0.000B

Copy link

codspeed-hq bot commented Dec 22, 2023

CodSpeed Performance Report

Merging #4611 will not alter performance

⚠️ No base runs were found

Falling back to comparing tech/rust-toolchain (b2225da) with main (01382e5)

Summary

✅ 11 untouched benchmarks

Copy link
Contributor

github-actions bot commented Dec 22, 2023

✅ WASM query-engine: no benchmarks have regressed

Full benchmark report
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/bench?schema=imdb_bench&sslmode=disable" \
node --experimental-wasm-modules query-engine/driver-adapters/executor/dist/bench.mjs
cpu: AMD EPYC 7763 64-Core Processor
runtime: node v18.19.0 (x64-linux)

benchmark                   time (avg)             (min … max)       p75       p99      p995
-------------------------------------------------------------- -----------------------------
• movies.findMany() (all - 25000)
-------------------------------------------------------------- -----------------------------
Web Assembly: Baseline  303.01 ms/iter (300.38 ms … 314.02 ms) 302.82 ms 314.02 ms 314.02 ms
Web Assembly: Latest     302.2 ms/iter (300.67 ms … 307.97 ms) 302.05 ms 307.97 ms 307.97 ms
Web Assembly: Current   305.45 ms/iter    (302 ms … 318.88 ms)  305.4 ms 318.88 ms 318.88 ms
Node API: Current       232.49 ms/iter (226.58 ms … 243.33 ms) 236.46 ms 243.33 ms 243.33 ms

summary for movies.findMany() (all - 25000)
  Web Assembly: Current
   1.31x slower than Node API: Current
   1.01x slower than Web Assembly: Latest
   1.01x slower than Web Assembly: Baseline

• movies.findMany({ take: 2000 })
-------------------------------------------------------------- -----------------------------
Web Assembly: Baseline   12.24 ms/iter   (11.82 ms … 14.33 ms)  12.23 ms  14.33 ms  14.33 ms
Web Assembly: Latest     13.14 ms/iter   (12.09 ms … 22.35 ms)  12.61 ms  22.35 ms  22.35 ms
Web Assembly: Current    12.65 ms/iter   (11.94 ms … 19.15 ms)  12.37 ms  19.15 ms  19.15 ms
Node API: Current         9.49 ms/iter    (9.04 ms … 11.66 ms)   9.53 ms  11.66 ms  11.66 ms

summary for movies.findMany({ take: 2000 })
  Web Assembly: Current
   1.33x slower than Node API: Current
   1.03x slower than Web Assembly: Baseline
   1.04x faster than Web Assembly: Latest

• movies.findMany({ where: {...}, take: 2000 })
-------------------------------------------------------------- -----------------------------
Web Assembly: Baseline       2 ms/iter     (1.83 ms … 3.52 ms)   1.94 ms   3.44 ms   3.44 ms
Web Assembly: Latest      2.05 ms/iter     (1.84 ms … 3.61 ms)   1.96 ms   3.41 ms   3.45 ms
Web Assembly: Current     2.06 ms/iter      (1.86 ms … 3.5 ms)   1.98 ms   3.39 ms   3.41 ms
Node API: Current         1.53 ms/iter     (1.44 ms … 2.15 ms)   1.55 ms   2.03 ms   2.07 ms

summary for movies.findMany({ where: {...}, take: 2000 })
  Web Assembly: Current
   1.35x slower than Node API: Current
   1.03x slower than Web Assembly: Baseline
   1.01x slower than Web Assembly: Latest

• movies.findMany({ include: { cast: true } take: 2000 }) (m2m)
-------------------------------------------------------------- -----------------------------
Web Assembly: Baseline   12.14 ms/iter    (11.8 ms … 12.99 ms)  12.23 ms  12.99 ms  12.99 ms
Web Assembly: Latest     12.36 ms/iter   (12.06 ms … 13.83 ms)  12.31 ms  13.83 ms  13.83 ms
Web Assembly: Current    12.25 ms/iter    (11.98 ms … 12.7 ms)  12.33 ms   12.7 ms   12.7 ms
Node API: Current         9.77 ms/iter    (9.18 ms … 17.94 ms)   9.59 ms  17.94 ms  17.94 ms

summary for movies.findMany({ include: { cast: true } take: 2000 }) (m2m)
  Web Assembly: Current
   1.25x slower than Node API: Current
   1.01x slower than Web Assembly: Baseline
   1.01x faster than Web Assembly: Latest

• movies.findMany({ where: {...}, include: { cast: true } take: 2000 }) (m2m)
-------------------------------------------------------------- -----------------------------
Web Assembly: Baseline     1.9 ms/iter     (1.81 ms … 3.14 ms)   1.89 ms   2.45 ms   2.61 ms
Web Assembly: Latest       1.9 ms/iter     (1.83 ms … 4.44 ms)   1.89 ms   2.79 ms   3.15 ms
Web Assembly: Current     1.92 ms/iter      (1.84 ms … 3.1 ms)   1.91 ms   2.81 ms   2.88 ms
Node API: Current         1.55 ms/iter     (1.45 ms … 2.21 ms)   1.57 ms   1.74 ms   1.76 ms

summary for movies.findMany({ where: {...}, include: { cast: true } take: 2000 }) (m2m)
  Web Assembly: Current
   1.24x slower than Node API: Current
   1.01x slower than Web Assembly: Baseline
   1.01x slower than Web Assembly: Latest

• movies.findMany({ take: 2000, include: { cast: { include: { person: true } } } })
-------------------------------------------------------------- -----------------------------
Web Assembly: Baseline   12.28 ms/iter   (11.83 ms … 15.52 ms)  12.23 ms  15.52 ms  15.52 ms
Web Assembly: Latest     12.15 ms/iter   (12.04 ms … 12.57 ms)  12.17 ms  12.57 ms  12.57 ms
Web Assembly: Current    12.24 ms/iter   (11.86 ms … 16.87 ms)  12.24 ms  16.87 ms  16.87 ms
Node API: Current          9.3 ms/iter     (8.96 ms … 9.84 ms)   9.35 ms   9.84 ms   9.84 ms

summary for movies.findMany({ take: 2000, include: { cast: { include: { person: true } } } })
  Web Assembly: Current
   1.32x slower than Node API: Current
   1.01x slower than Web Assembly: Latest
   1x faster than Web Assembly: Baseline

• movie.findMany({ where: { ... }, take: 2000, include: { cast: { include: { person: true } } } })
-------------------------------------------------------------- -----------------------------
Web Assembly: Baseline    1.93 ms/iter      (1.81 ms … 2.9 ms)   1.92 ms   2.87 ms    2.9 ms
Web Assembly: Latest      2.02 ms/iter     (1.81 ms … 4.68 ms)   1.93 ms      4 ms   4.61 ms
Web Assembly: Current     1.89 ms/iter     (1.82 ms … 2.44 ms)   1.89 ms   2.34 ms   2.36 ms
Node API: Current         1.57 ms/iter     (1.47 ms … 2.07 ms)   1.58 ms   1.82 ms      2 ms

summary for movie.findMany({ where: { ... }, take: 2000, include: { cast: { include: { person: true } } } })
  Web Assembly: Current
   1.21x slower than Node API: Current
   1.02x faster than Web Assembly: Baseline
   1.07x faster than Web Assembly: Latest

• movie.findMany({ where: { reviews: { author: { ... } }, take: 100 }) (to-many -> to-one)
-------------------------------------------------------------- -----------------------------
Web Assembly: Baseline  938.17 µs/iter   (858.06 µs … 1.59 ms) 925.14 µs   1.51 ms   1.58 ms
Web Assembly: Latest    922.55 µs/iter   (847.17 µs … 3.13 ms) 916.68 µs   1.41 ms   1.48 ms
Web Assembly: Current   924.05 µs/iter   (859.08 µs … 1.57 ms) 919.58 µs   1.45 ms   1.53 ms
Node API: Current       819.43 µs/iter   (762.78 µs … 1.11 ms) 853.15 µs 990.13 µs   1.01 ms

summary for movie.findMany({ where: { reviews: { author: { ... } }, take: 100 }) (to-many -> to-one)
  Web Assembly: Current
   1.13x slower than Node API: Current
   1x faster than Web Assembly: Latest
   1.02x faster than Web Assembly: Baseline

• movie.findMany({ where: { cast: { person: { ... } }, take: 100 }) (m2m -> to-one)
-------------------------------------------------------------- -----------------------------
Web Assembly: Baseline   935.7 µs/iter   (887.33 µs … 1.48 ms) 935.22 µs   1.28 ms   1.31 ms
Web Assembly: Latest    897.56 µs/iter   (852.91 µs … 1.45 ms) 899.71 µs   1.18 ms    1.2 ms
Web Assembly: Current   904.76 µs/iter   (864.23 µs … 2.25 ms) 905.55 µs   1.36 ms   1.56 ms
Node API: Current       848.29 µs/iter   (762.56 µs … 1.04 ms) 864.32 µs 996.46 µs   1.02 ms

summary for movie.findMany({ where: { cast: { person: { ... } }, take: 100 }) (m2m -> to-one)
  Web Assembly: Current
   1.07x slower than Node API: Current
   1.01x slower than Web Assembly: Latest
   1.03x faster than Web Assembly: Baseline

After changes in b2225da

rust-toolchain.toml Outdated Show resolved Hide resolved
rust-toolchain.toml Outdated Show resolved Hide resolved
@jkomyno
Copy link
Contributor

jkomyno commented Dec 26, 2023

Hi, is there a Slack conversation this PR is inspired from? I'm just trying to understand what prompted this PR, before reviewing that.

@Druue
Copy link
Contributor Author

Druue commented Jan 2, 2024

@jkomyno

Hi, is there a Slack conversation this PR is inspired from? I'm just trying to understand what prompted this PR, before reviewing that.

Slack thread

@Druue
Copy link
Contributor Author

Druue commented Jan 3, 2024

🤔
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/tech A technical change.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants