Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
perf(turbo-tasks): Filter out and do not cache unused arguments (#75261)
For trait methods, we often have underscore-prefixed arguments that are unused in method implementations, but must exist on the method signature because the trait requires it. For example, look at `code_generation`: https://github.com/search?q=repo%3Avercel%2Fnext.js%20fn%20code_generation&type=code We can filter those arguments as soon as we resolve the real method, and avoid storing them as part of the task's cache key. This should mean less data stored per task, and better cache hit rates (so less tasks overall). This appears to give a roughly 5% memory win:  (Spreadsheet: https://docs.google.com/spreadsheets/d/1fz9Q-tDE6LebS9p4Mci8vZG7jkBSajiMYF1WbZEPnts/edit?usp=sharing) Full data: <details> Tested with next-site in front. Command run: ``` rm -rf .next && TURBOPACK=1 TURBOPACK_BUILD=1 TURBO_ENGINE_READ_ONLY=1 /bin/time -v pnpm next build --experimental-build-mode=compile ``` # Before, run 1 Compiled in: 19.3s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 121.88 System time (seconds): 16.74 Percent of CPU this job got: 501% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:27.61 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5607868 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 58 Minor (reclaiming a frame) page faults: 1816374 Voluntary context switches: 1280636 Involuntary context switches: 361414 Swaps: 0 File system inputs: 102088 File system outputs: 738000 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 ``` # Before, run 2 Compiled in: 19.3s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 124.34 System time (seconds): 16.97 Percent of CPU this job got: 516% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:27.36 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5455968 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 8 Minor (reclaiming a frame) page faults: 2014509 Voluntary context switches: 1267794 Involuntary context switches: 358175 Swaps: 0 File system inputs: 6496 File system outputs: 737296 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 ``` # Before, run 3 Compiled in: 18.4s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 117.81 System time (seconds): 15.86 Percent of CPU this job got: 505% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.46 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5655912 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 5 Minor (reclaiming a frame) page faults: 1868540 Voluntary context switches: 1271444 Involuntary context switches: 337236 Swaps: 0 File system inputs: 7784 File system outputs: 737480 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: ``` # Before, run 4 Compiled in: 18.2s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 116.98 System time (seconds): 15.09 Percent of CPU this job got: 504% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.15 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5962764 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 1861147 Voluntary context switches: 1253759 Involuntary context switches: 333116 Swaps: 0 File system inputs: 0 File system outputs: 737304 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 ``` # Before, run 5 Compiled in: 17.9s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 119.02 System time (seconds): 14.84 Percent of CPU this job got: 516% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:25.92 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5745780 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 1542655 Voluntary context switches: 1238600 Involuntary context switches: 357049 Swaps: 0 File system inputs: 0 File system outputs: 737000 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 ``` # After, run 1 Compiled in: 19.0s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 121.85 System time (seconds): 16.69 Percent of CPU this job got: 508% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:27.22 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5402708 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 41 Minor (reclaiming a frame) page faults: 1822829 Voluntary context switches: 1221091 Involuntary context switches: 361604 Swaps: 0 File system inputs: 110200 File system outputs: 737048 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 ``` # After, run 2 Compiled in: 18.5s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 119.46 System time (seconds): 15.32 Percent of CPU this job got: 506% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.60 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5413980 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 1 Minor (reclaiming a frame) page faults: 1695775 Voluntary context switches: 1269774 Involuntary context switches: 328448 Swaps: 0 File system inputs: 800 File system outputs: 736952 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 ``` # After, run 3 Compiled in: 18.5s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 118.15 System time (seconds): 15.12 Percent of CPU this job got: 503% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.48 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5312528 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 1893778 Voluntary context switches: 1277325 Involuntary context switches: 324591 Swaps: 0 File system inputs: 128 File system outputs: 737304 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 ``` # After, run 4 Compiled in: 18.2s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 115.60 System time (seconds): 15.30 Percent of CPU this job got: 499% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.22 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5240892 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 1 Minor (reclaiming a frame) page faults: 1514837 Voluntary context switches: 1296049 Involuntary context switches: 312076 Swaps: 0 File system inputs: 32 File system outputs: 737664 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 ``` # After, run 5 Compiled in: 19.4s ``` Command being timed: "pnpm next build --experimental-build-mode=compile" User time (seconds): 125.91 System time (seconds): 15.63 Percent of CPU this job got: 514% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:27.50 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 5346672 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 1 Minor (reclaiming a frame) page faults: 1839175 Voluntary context switches: 1280293 Involuntary context switches: 358863 Swaps: 0 File system inputs: 32 File system outputs: 737720 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 ``` </details>
- Loading branch information