Skip to content

Large performance regression in Root.load & loadSync in 7.5.0 #2063

Open
@simon-paris

Description

@simon-paris

In 7.5.0, Root.load calls resolveAll. Foreach call to load or loadSync, it will resolve every type, resulting in O(n^2) performance where n is the number of input files.

This is a very large performance regression in workflows that have more than one entry point proto file. In my project, initialization is ~100x slower (from 300ms to 30s).

Additionally, the async version calls resolveAll twice, doubling the performance hit. It appears that one call is meant to happen in the sync version and the other in the async version, but the async version actually runs both calls.

The change was made here: b802c42#diff-45840cbec0137d0498a3dbcf38eba6a358e2b8bfd9f1eca20abdfc7b386d13b1R208

cc @sofisl

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions