nodejs / nodejs/node

Enable PGO for Windows builds (x64 and Arm64)

Open
#61,964 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

build feature request
Dominant language
JavaScript
Stars
122k
Forks
37.3k
Avg merge
4d 2h
Merged PRs (30d)
283

Description

What is the problem this feature will solve?

Profile Guided Optimization has been available for some time now, and stats from projects that adopt PGO commonly show runtime perf improvements of around 10%. LLVM and MSVC offer PGO when building Windows apps for x64 and Arm64 ABI apps.

This request is to investigate and implement PGO in the CI release jobs when building Windows versions of nodeJS for both Arm64 and x64 ABIs.

Overview of LLVM PGO process:
https://llvm.org/devmtg/2020-09/slides/PGO_Instrumentation.pdf

What is the feature you are proposing to solve the problem?

Add to the CI release jobs:

  • Enable PGO instrumentation profiling during first pass build.
  • execute nodejs using a predefined test script for most common scenarios to generate profile data
  • Relink the app using the profile data for optimization guidance.
What alternatives have you considered?

nonw

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the Windows x64 and Arm64 CI release jobs and reviewing the linked LLVM PGO process. Done means both release paths perform an instrumented build, run a predefined Node.js scenario script to create profile data, and relink using that data for optimized builds.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js
Domain
build-system, ci-cd, operating-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.