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

perf(turbopack): Reduce size of Effect #74969

Merged
merged 4 commits into from
Jan 16, 2025
Merged

Conversation

kdy1
Copy link
Member

@kdy1 kdy1 commented Jan 16, 2025

What?

Reduce the size of frequently created types by boxing server fields.

Why?

Closes PACK-3748

@kdy1 kdy1 marked this pull request as ready for review January 16, 2025 06:58
@ijjk
Copy link
Member

ijjk commented Jan 16, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
buildDuration 17.9s 15s N/A
buildDurationCached 14.2s 11.9s N/A
nodeModulesSize 418 MB 418 MB
nextStartRea..uration (ms) 415ms 413ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
5306-HASH.js gzip 53.9 kB 53.9 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.44 kB 5.44 kB N/A
bccd1874-HASH.js gzip 52.9 kB 52.9 kB N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 240 B 242 B N/A
main-HASH.js gzip 34.2 kB 34.2 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 0 B 0 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.57 kB 4.57 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.34 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
_buildManifest.js gzip 749 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
index.html gzip 524 B 523 B N/A
link.html gzip 539 B 537 B N/A
withRouter.html gzip 520 B 520 B
Overall change 520 B 520 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
edge-ssr.js gzip 129 kB 129 kB N/A
page.js gzip 208 kB 208 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
middleware-b..fest.js gzip 672 B 667 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.3 kB 31.3 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
274-experime...dev.js gzip 322 B 322 B
274.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 374 kB 374 kB
app-page-exp..prod.js gzip 130 kB 130 kB
app-page-tur..prod.js gzip 143 kB 143 kB
app-page-tur..prod.js gzip 139 kB 139 kB
app-page.run...dev.js gzip 362 kB 362 kB
app-page.run..prod.js gzip 126 kB 126 kB
app-route-ex...dev.js gzip 37.6 kB 37.6 kB
app-route-ex..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.4 kB 25.4 kB
app-route.ru...dev.js gzip 39.2 kB 39.2 kB
app-route.ru..prod.js gzip 25.4 kB 25.4 kB
pages-api-tu..prod.js gzip 9.69 kB 9.69 kB
pages-api.ru...dev.js gzip 11.6 kB 11.6 kB
pages-api.ru..prod.js gzip 9.68 kB 9.68 kB
pages-turbo...prod.js gzip 21.7 kB 21.7 kB
pages.runtim...dev.js gzip 27.5 kB 27.5 kB
pages.runtim..prod.js gzip 21.7 kB 21.7 kB
server.runti..prod.js gzip 916 kB 916 kB
Overall change 2.47 MB 2.47 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js kdy1/dod-es-analyzer-effect-size Change
0.pack gzip 2.1 MB 2.09 MB N/A
index.pack gzip 75.3 kB 76 kB ⚠️ +727 B
Overall change 75.3 kB 76 kB ⚠️ +727 B
Diff details
Diff for main-HASH.js

Diff too large to display

Commit: 5542464

@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-constant-regex branch from bd6e814 to 1ba8279 Compare January 16, 2025 07:24
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-effect-size branch from 94a641d to 56b38da Compare January 16, 2025 07:25
@@ -1171,11 +1171,11 @@ pub(crate) async fn analyse_ecmascript_module_internal(
} => {
// FreeVar("require") might be turbopackIgnore-d
if !analysis_state
.link_value(var.clone(), eval_context.imports.get_attributes(span))
.link_value(*var.clone(), eval_context.imports.get_attributes(span))
Copy link
Member

@sokra sokra Jan 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that cloning the Box to deref it afterwards? Could we do var.as_ref().clone()?

@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-constant-regex branch from 1ba8279 to 8ca61e6 Compare January 16, 2025 07:40
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-effect-size branch from 56b38da to 6e29459 Compare January 16, 2025 07:41
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-constant-regex branch from 8ca61e6 to c0f1138 Compare January 16, 2025 07:48
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-effect-size branch from 6e29459 to 5e22be0 Compare January 16, 2025 07:48
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-constant-regex branch from c0f1138 to f805ed0 Compare January 16, 2025 09:14
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-effect-size branch from 5e22be0 to 41a9221 Compare January 16, 2025 09:14
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-constant-regex branch from f805ed0 to 3003384 Compare January 16, 2025 09:27
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-effect-size branch from 41a9221 to 33e1a32 Compare January 16, 2025 09:27
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-constant-regex branch 2 times, most recently from a1c247d to 95ebd2c Compare January 16, 2025 11:00
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-effect-size branch from 33e1a32 to 723f0bc Compare January 16, 2025 11:00
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-constant-regex branch from 95ebd2c to 5a542e8 Compare January 16, 2025 12:29
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-effect-size branch from 723f0bc to 3e0fddc Compare January 16, 2025 12:30
@kdy1 kdy1 changed the base branch from kdy1/dod-es-analyzer-constant-regex to graphite-base/74969 January 16, 2025 13:37
@kdy1 kdy1 force-pushed the graphite-base/74969 branch from 5a542e8 to 30b4a11 Compare January 16, 2025 13:38
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-effect-size branch from 3e0fddc to c5cbcb0 Compare January 16, 2025 13:38
@kdy1 kdy1 changed the base branch from graphite-base/74969 to canary January 16, 2025 13:38
@kdy1 kdy1 force-pushed the kdy1/dod-es-analyzer-effect-size branch from c5cbcb0 to 5542464 Compare January 16, 2025 13:38
@kdy1 kdy1 merged commit 5c2a39f into canary Jan 16, 2025
133 checks passed
Copy link
Member Author

kdy1 commented Jan 16, 2025

Merge activity

  • Jan 16, 11:04 PM GMT+9: A user merged this pull request with Graphite.

@kdy1 kdy1 deleted the kdy1/dod-es-analyzer-effect-size branch January 16, 2025 14:04
@github-actions github-actions bot added the locked label Feb 3, 2025
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 3, 2025
@kdy1 kdy1 self-assigned this Feb 5, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
created-by: Turbopack team PRs by the Turbopack team. locked
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants