{"id":26694641,"url":"https://github.com/meskill/webpack5-performance-dynamic-import","last_synced_at":"2025-03-26T18:32:41.002Z","repository":{"id":283758813,"uuid":"657216839","full_name":"meskill/webpack5-performance-dynamic-import","owner":"meskill","description":"Reproduction case for the issue https://github.com/webpack/webpack/issues/17416","archived":false,"fork":false,"pushed_at":"2023-06-22T15:11:53.000Z","size":509,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T02:01:42.012Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meskill.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-22T15:11:32.000Z","updated_at":"2023-12-22T05:17:51.000Z","dependencies_parsed_at":"2025-03-22T02:01:57.938Z","dependency_job_id":"64c1f67a-ddb4-4dd8-a6bb-154a0db6b647","html_url":"https://github.com/meskill/webpack5-performance-dynamic-import","commit_stats":null,"previous_names":["meskill/webpack5-performance-dynamic-import"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meskill%2Fwebpack5-performance-dynamic-import","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meskill%2Fwebpack5-performance-dynamic-import/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meskill%2Fwebpack5-performance-dynamic-import/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meskill%2Fwebpack5-performance-dynamic-import/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meskill","download_url":"https://codeload.github.com/meskill/webpack5-performance-dynamic-import/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245712800,"owners_count":20660298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-26T18:31:48.193Z","updated_at":"2025-03-26T18:32:40.991Z","avatar_url":"https://github.com/meskill.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Webpack 5 test repo\n\nThis repo shows performance slowdown and higher memory consumption in webpack when using async dynamic imports instead of sync requires.\n\n\u003e **Note**\n\u003e\n\u003e The results may differ on your machine.\n\u003e Also the repo doesn't have such noticeable difference in build time and memory consumption as it happens for real world projects. I've tried my best to replicate it, but in real project it shows really significant difference.\n\n## How to reproduce\n\n1. Clone this repo\n2. Run `npm ci`\n3. Run `npm run build`\n\n   This will show next logs:\n   ```\n    _____Current Memory rss:  309133312\n    asset main.js 2.34 MiB [compared for emit] (name: main)\n    orphan modules 633 KiB [orphan] 103 modules\n    runtime modules 3.05 KiB 7 modules\n    modules by path ./node_modules/ 1.85 MiB 296 modules\n    modules by path ./src/ 6.6 KiB\n    optional modules 4.19 KiB [optional]\n        ./src/dynamic/1.js 143 bytes [optional] [built] [code generated]\n        ./src/dynamic/1 - Copy.js 143 bytes [optional] [built] [code generated]\n        ./src/dynamic/1 - Copy (2).js 143 bytes [optional] [built] [code generated]\n        + 47 modules\n    ./src/index.js 96 bytes [built] [code generated]\n    ./src/dynamic/ sync ^\\.\\/.*$ 2.05 KiB [built] [code generated]\n    ./src/dynamic/3.js 66 bytes [built] [code generated]\n    ./src/dynamic/6.js 63 bytes [built] [code generated]\n    ./src/dynamic/7.js 76 bytes [built] [code generated]\n\n    DEBUG LOG from webpack.buildChunkGraph\n    \u003ct\u003e visitModules: prepare: 8.2202 ms\n    \u003ct\u003e visitModules: visiting: 13.0812 ms\n        739 queue items processed (352 blocks)\n        0 chunk groups connected\n        0 chunk groups processed for merging (0 module sets, 0 forked, 0 + 0 modules forked, 0 + 0 modules merged into fork, 0 resulting modules)\n        0 chunk group info updated (0 already connected chunk groups reconnected)\n    \u003ct\u003e visitModules: 15.0455 ms\n    \u003ct\u003e connectChunkGroups: 0.1574 ms\n    \u003ct\u003e cleanup: 0.0977 ms\n\n    webpack 5.87.0 compiled successfully in 17696 ms\n   ```\n\n    ![cpu profile](profile/cpu-require-sync.png)\n\n4. Go to `./src/index.js` and comment first line and uncomment second line\n5. Run again `npm run build` to see\n    ```\n    _____Current Memory rss:  353538048\n    asset src_dynamic_1_-_Copy_2_js.js 2.11 MiB [compared for emit]\n    asset src_dynamic_1_-_Copy_3_js.js 2.11 MiB [compared for emit]\n    asset src_dynamic_1_-_Copy_4_js.js 2.11 MiB [compared for emit]\n    asset src_dynamic_1_-_Copy_5_js.js 2.11 MiB [compared for emit]\n    asset src_dynamic_1_-_Copy_js.js 2.11 MiB [compared for emit]\n    asset src_dynamic_1_js.js 2.11 MiB [compared for emit]\n    asset src_dynamic_2_-_Copy_2_js.js 1.48 MiB [compared for emit]\n    asset src_dynamic_2_-_Copy_3_js.js 1.48 MiB [compared for emit]\n    asset src_dynamic_2_-_Copy_4_js.js 1.48 MiB [compared for emit]\n    asset src_dynamic_2_-_Copy_5_js.js 1.48 MiB [compared for emit]\n    asset src_dynamic_2_-_Copy_js.js 1.48 MiB [compared for emit]\n    asset src_dynamic_2_js.js 1.48 MiB [compared for emit]\n    asset src_dynamic_8_-_Copy_2_js.js 1.17 MiB [compared for emit]\n    asset src_dynamic_8_-_Copy_3_js.js 1.17 MiB [compared for emit]\n    + 41 assets\n    orphan modules 633 KiB [orphan] 103 modules\n    runtime modules 8.89 KiB 12 modules\n    modules by path ./node_modules/ 1.85 MiB 296 modules\n    modules by path ./src/ 4.7 KiB\n    optional modules 4.19 KiB [optional]\n        ./src/dynamic/1.js 143 bytes [optional] [built] [code generated]\n        ./src/dynamic/1 - Copy.js 143 bytes [optional] [built] [code generated]\n        ./src/dynamic/1 - Copy (2).js 143 bytes [optional] [built] [code generated]\n        + 47 modules\n    ./src/index.js 96 bytes [built] [code generated]\n    ./src/dynamic/ lazy ^\\.\\/.*$ namespace object 160 bytes [built] [code generated]\n    ./src/dynamic/2.js 69 bytes [built] [code generated]\n    ./src/dynamic/3.js 66 bytes [built] [code generated]\n    ./src/dynamic/6.js 63 bytes [built] [code generated]\n    ./src/dynamic/7.js 76 bytes [built] [code generated]\n\n    \u003ct\u003e visitModules: prepare: 0.672858 ms\n    \u003ct\u003e visitModules: visiting: 3.224541 ms\n    \u003ct\u003e visitModules: calculating available modules: 0.475475 ms\n    \u003ct\u003e visitModules: merging available modules: 0.488474 ms\n    \u003ct\u003e visitModules: check modules for revisit: 0.187958 ms\n    \u003ct\u003e visitModules: prepare: 5.469101 ms\n    \u003ct\u003e visitModules: visiting: 56.123377 ms\n        20776 queue items processed (9938 blocks)\n        108 chunk groups connected\n        108 chunk groups processed for merging (108 module sets, 0 forked, 0 + 0 modules forked, 0 + 0 modules merged into fork, 0 resulting modules)\n        108 chunk group info updated (0 already connected chunk groups reconnected)\n    \u003ct\u003e visitModules: 62.310184 ms\n    \u003ct\u003e connectChunkGroups: 1.191125 ms\n    \u003ct\u003e cleanup: 0.305825 ms\n\n    webpack 5.87.0 compiled successfully in 20919 ms\n    ```\n\n    ![cpu profile](profile/cpu-import-async.png)\n6. You should notice that the second build requires more time and memory","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeskill%2Fwebpack5-performance-dynamic-import","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeskill%2Fwebpack5-performance-dynamic-import","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeskill%2Fwebpack5-performance-dynamic-import/lists"}