]> Cypherpunks repositories - gostls13.git/commit
cmd/compile/internal/escape: improve order of work to speed up analyzing many locations
authorthepudds <thepudds1460@gmail.com>
Wed, 12 Mar 2025 21:29:25 +0000 (17:29 -0400)
committerDavid Chase <drchase@google.com>
Wed, 21 May 2025 03:11:56 +0000 (20:11 -0700)
commit74304cda29381fd5ba07a4090b701f8a670896c6
tree061d8e3b8885bd6dc91954956e4e62f7bb218b25
parenta070533633bd709bc3598dbd7c28edca1d2ba6e2
cmd/compile/internal/escape: improve order of work to speed up analyzing many locations

For the package github.com/microsoft/typescript-go/internal/checker,
compilation currently spends most of its time in escape analysis.

Here, we re-order work to be more efficient when analyzing many
locations, and delay visiting some locations to prioritize locations
that might be more likely to reach a terminal point of reaching the
heap and possibly reduce the count of intermediate states for each location.

Action graph reported build times show roughly a 5x improvement for
compilation of the typescript-go/internal/checker package:

  go1.24.0:      91.792s
  cl-657179-ps1: 17.578s

with timing via:

  go build -a -debug-actiongraph=/tmp/actiongraph-cl-657179-ps1 -v github.com/microsoft/typescript-go/internal/checker

There are some additional adjustments to make here, including we can
consider a follow-on CL I have that parallelizes the operations of the
core loop, but this seems to be a nice win as is, and my understanding
is the desire is to merge this as it stands.

Updates #72815

Change-Id: I1753c5354b495b059f68fb97f3103ee7834f9eee
Reviewed-on: https://go-review.googlesource.com/c/go/+/657179
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
src/cmd/compile/internal/escape/graph.go
src/cmd/compile/internal/escape/solve.go