Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cache results of static types migration and entitlements migration #3396

Merged
merged 3 commits into from
Jun 5, 2024

Conversation

turbolent
Copy link
Member

@turbolent turbolent commented Jun 5, 2024

Work towards #3297

Description

In #3375 we removed the broken caching of results of the static types migration and entitlements migration.

Bring back the caching, but use the encoding of the static type instead of the type ID. The encoding of a static type isn't ambiguous or lacking any details compared to the type ID. I double checked that legacy / pre-1.0 information in static types, like the legacy restricted type in an intersection type (previously restriction type), is not only decoded properly for the migration, but also encoded again with the legacy information (which isn't the case for type IDs).

Disable the caching by default, so the default behaviour is always correct. In flow-go, this feature will be enabled through a flag (again, off by default).

I tested this approach in flow-go, and a run with caching always produces the same new state commitment as a non-caching run.


  • Targeted PR against master branch
  • Linked to Github issue with discussion and accepted design OR link to spec that describes this work
  • Code follows the standards mentioned here
  • Updated relevant documentation
  • Re-reviewed Files changed in the Github PR explorer
  • Added appropriate labels

Copy link

github-actions bot commented Jun 5, 2024

Cadence Benchstat comparison

This branch with compared with the base branch onflow:master commit bf9965d
The command for i in {1..N}; do go test ./... -run=XXX -bench=. -benchmem -shuffle=on; done was used.
Bench tests were run a total of 7 times on each branch.

Collapsed results for better readability

old.txtnew.txt
time/opdelta
DecodeBatchEventsCCF-4129ms ± 0%133ms ± 0%~(p=1.000 n=1+1)
DecodeBatchEventsJSON-4370ms ± 0%1276ms ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowFees.FeesDeducted-42.81µs ± 0%2.85µs ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowFees.TokensWithdrawn-42.10µs ± 0%2.15µs ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowIDTableStaking.DelegatorRewardsPaid-42.75µs ± 0%2.85µs ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowIDTableStaking.EpochTotalRewardsPaid-43.12µs ± 0%3.22µs ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowIDTableStaking.NewWeeklyPayout-42.15µs ± 0%2.38µs ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowIDTableStaking.RewardsPaid-42.51µs ± 0%2.58µs ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowToken.TokensDeposited-42.53µs ± 0%2.63µs ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowToken.TokensDeposited_with_nil_receiver-42.48µs ± 0%2.54µs ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowToken.TokensMinted-42.08µs ± 0%2.17µs ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowToken.TokensWithdrawn-42.55µs ± 0%2.63µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowFees.FeesDeducted-432.9µs ± 0%9.3µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowFees.TokensWithdrawn-45.67µs ± 0%5.22µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowIDTableStaking.DelegatorRewardsPaid-48.20µs ± 0%8.24µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowIDTableStaking.EpochTotalRewardsPaid-411.3µs ± 0%11.3µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowIDTableStaking.NewWeeklyPayout-45.36µs ± 0%5.38µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowIDTableStaking.RewardsPaid-46.95µs ± 0%6.98µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowToken.TokensDeposited-47.28µs ± 0%7.33µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowToken.TokensDeposited_with_nil_receiver-46.51µs ± 0%6.63µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowToken.TokensMinted-45.39µs ± 0%5.36µs ± 0%~(p=1.000 n=1+1)
DecodeJSON/FlowToken.TokensWithdrawn-47.37µs ± 0%7.24µs ± 0%~(p=1.000 n=1+1)
EncodeBatchEventsCCF-484.3ms ± 0%84.1ms ± 0%~(p=1.000 n=1+1)
EncodeBatchEventsJSON-4104ms ± 0%101ms ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowFees.FeesDeducted-41.86µs ± 0%1.85µs ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowFees.TokensWithdrawn-41.47µs ± 0%1.48µs ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowIDTableStaking.DelegatorRewardsPaid-41.79µs ± 0%1.78µs ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowIDTableStaking.EpochTotalRewardsPaid-42.11µs ± 0%2.09µs ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowIDTableStaking.NewWeeklyPayout-41.53µs ± 0%1.49µs ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowIDTableStaking.RewardsPaid-41.68µs ± 0%1.62µs ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowToken.TokensDeposited-41.70µs ± 0%1.67µs ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowToken.TokensDeposited_with_nil_receiver-41.69µs ± 0%1.66µs ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowToken.TokensMinted-41.50µs ± 0%1.48µs ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowToken.TokensWithdrawn-41.71µs ± 0%1.67µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowFees.FeesDeducted-42.39µs ± 0%2.37µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowFees.TokensWithdrawn-41.36µs ± 0%1.38µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowIDTableStaking.DelegatorRewardsPaid-42.15µs ± 0%2.16µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowIDTableStaking.EpochTotalRewardsPaid-42.97µs ± 0%2.99µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowIDTableStaking.NewWeeklyPayout-41.41µs ± 0%1.42µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowIDTableStaking.RewardsPaid-41.82µs ± 0%1.79µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowToken.TokensDeposited-42.08µs ± 0%2.07µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowToken.TokensDeposited_with_nil_receiver-41.64µs ± 0%1.62µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowToken.TokensMinted-41.39µs ± 0%1.38µs ± 0%~(p=1.000 n=1+1)
EncodeJSON/FlowToken.TokensWithdrawn-42.09µs ± 0%2.04µs ± 0%~(p=1.000 n=1+1)
ExportType/composite_type-4260ns ± 0%262ns ± 0%~(p=1.000 n=1+1)
ExportType/simple_type-477.7ns ± 0%77.6ns ± 0%~(p=1.000 n=1+1)
InterpretRecursionFib-41.90ms ± 0%1.94ms ± 0%~(p=1.000 n=1+1)
NewInterpreter/new_interpreter-4853ns ± 0%868ns ± 0%~(p=1.000 n=1+1)
NewInterpreter/new_sub-interpreter-4361ns ± 0%360ns ± 0%~(p=1.000 n=1+1)
ParseArray-46.05ms ± 1%6.13ms ± 0%~(p=0.333 n=2+2)
ParseDeploy/byte_array-49.01ms ± 0%9.12ms ± 1%~(p=0.333 n=2+2)
ParseDeploy/decode_hex-41.03ms ± 0%1.03ms ± 3%~(p=1.000 n=2+2)
ParseFungibleToken/With_memory_metering-4155µs ± 2%152µs ± 3%~(p=0.667 n=2+2)
ParseFungibleToken/Without_memory_metering-4123µs ± 7%120µs ± 4%~(p=1.000 n=2+2)
ParseInfix-45.27µs ± 1%5.23µs ± 1%~(p=0.667 n=2+2)
QualifiedIdentifierCreation/One_level-42.17ns ± 0%2.18ns ± 0%~(p=1.000 n=1+1)
QualifiedIdentifierCreation/Three_levels-483.7ns ± 0%84.5ns ± 0%~(p=1.000 n=1+1)
RuntimeScriptNoop-43.61µs ± 0%3.76µs ± 0%~(p=1.000 n=1+1)
SuperTypeInference/arrays-4231ns ± 0%233ns ± 0%~(p=1.000 n=1+1)
SuperTypeInference/composites-487.7ns ± 0%87.9ns ± 0%~(p=1.000 n=1+1)
SuperTypeInference/integers-4297ns ± 0%310ns ± 0%~(p=1.000 n=1+1)
ValueIsSubtypeOfSemaType-466.0ns ± 0%70.1ns ± 0%~(p=1.000 n=1+1)
 
alloc/opdelta
DecodeBatchEventsCCF-466.5MB ± 0%66.5MB ± 0%~(p=1.000 n=1+1)
DecodeBatchEventsJSON-4242MB ± 0%242MB ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowFees.FeesDeducted-41.40kB ± 0%1.40kB ± 0%~(all equal)
DecodeCCF/FlowFees.TokensWithdrawn-41.21kB ± 0%1.21kB ± 0%~(all equal)
DecodeCCF/FlowIDTableStaking.DelegatorRewardsPaid-41.48kB ± 0%1.48kB ± 0%~(all equal)
DecodeCCF/FlowIDTableStaking.EpochTotalRewardsPaid-41.49kB ± 0%1.49kB ± 0%~(all equal)
DecodeCCF/FlowIDTableStaking.NewWeeklyPayout-41.26kB ± 0%1.26kB ± 0%~(all equal)
DecodeCCF/FlowIDTableStaking.RewardsPaid-41.38kB ± 0%1.38kB ± 0%~(all equal)
DecodeCCF/FlowToken.TokensDeposited-41.32kB ± 0%1.32kB ± 0%~(all equal)
DecodeCCF/FlowToken.TokensDeposited_with_nil_receiver-41.30kB ± 0%1.30kB ± 0%~(all equal)
DecodeCCF/FlowToken.TokensMinted-41.21kB ± 0%1.21kB ± 0%~(all equal)
DecodeCCF/FlowToken.TokensWithdrawn-41.33kB ± 0%1.33kB ± 0%~(all equal)
DecodeJSON/FlowFees.FeesDeducted-45.95kB ± 0%5.95kB ± 0%~(all equal)
DecodeJSON/FlowFees.TokensWithdrawn-43.55kB ± 0%3.55kB ± 0%~(all equal)
DecodeJSON/FlowIDTableStaking.DelegatorRewardsPaid-45.38kB ± 0%5.38kB ± 0%~(all equal)
DecodeJSON/FlowIDTableStaking.EpochTotalRewardsPaid-47.30kB ± 0%7.30kB ± 0%~(all equal)
DecodeJSON/FlowIDTableStaking.NewWeeklyPayout-43.59kB ± 0%3.59kB ± 0%~(all equal)
DecodeJSON/FlowIDTableStaking.RewardsPaid-44.49kB ± 0%4.49kB ± 0%~(all equal)
DecodeJSON/FlowToken.TokensDeposited-44.83kB ± 0%4.83kB ± 0%~(all equal)
DecodeJSON/FlowToken.TokensDeposited_with_nil_receiver-44.41kB ± 0%4.41kB ± 0%~(all equal)
DecodeJSON/FlowToken.TokensMinted-43.55kB ± 0%3.55kB ± 0%~(all equal)
DecodeJSON/FlowToken.TokensWithdrawn-44.83kB ± 0%4.83kB ± 0%~(all equal)
EncodeBatchEventsCCF-463.9MB ± 0%63.9MB ± 0%~(p=1.000 n=1+1)
EncodeBatchEventsJSON-440.7MB ± 0%40.7MB ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowFees.FeesDeducted-41.25kB ± 0%1.25kB ± 0%~(all equal)
EncodeCCF/FlowFees.TokensWithdrawn-41.20kB ± 0%1.20kB ± 0%~(all equal)
EncodeCCF/FlowIDTableStaking.DelegatorRewardsPaid-41.47kB ± 0%1.47kB ± 0%~(all equal)
EncodeCCF/FlowIDTableStaking.EpochTotalRewardsPaid-41.44kB ± 0%1.44kB ± 0%~(all equal)
EncodeCCF/FlowIDTableStaking.NewWeeklyPayout-41.38kB ± 0%1.38kB ± 0%~(all equal)
EncodeCCF/FlowIDTableStaking.RewardsPaid-41.46kB ± 0%1.46kB ± 0%~(all equal)
EncodeCCF/FlowToken.TokensDeposited-41.25kB ± 0%1.25kB ± 0%~(all equal)
EncodeCCF/FlowToken.TokensDeposited_with_nil_receiver-41.23kB ± 0%1.23kB ± 0%~(all equal)
EncodeCCF/FlowToken.TokensMinted-41.20kB ± 0%1.20kB ± 0%~(all equal)
EncodeCCF/FlowToken.TokensWithdrawn-41.25kB ± 0%1.25kB ± 0%~(all equal)
EncodeJSON/FlowFees.FeesDeducted-4896B ± 0%896B ± 0%~(all equal)
EncodeJSON/FlowFees.TokensWithdrawn-4536B ± 0%536B ± 0%~(all equal)
EncodeJSON/FlowIDTableStaking.DelegatorRewardsPaid-4920B ± 0%920B ± 0%~(all equal)
EncodeJSON/FlowIDTableStaking.EpochTotalRewardsPaid-41.11kB ± 0%1.11kB ± 0%~(all equal)
EncodeJSON/FlowIDTableStaking.NewWeeklyPayout-4584B ± 0%584B ± 0%~(all equal)
EncodeJSON/FlowIDTableStaking.RewardsPaid-4784B ± 0%784B ± 0%~(all equal)
EncodeJSON/FlowToken.TokensDeposited-4808B ± 0%808B ± 0%~(all equal)
EncodeJSON/FlowToken.TokensDeposited_with_nil_receiver-4672B ± 0%672B ± 0%~(all equal)
EncodeJSON/FlowToken.TokensMinted-4544B ± 0%544B ± 0%~(all equal)
EncodeJSON/FlowToken.TokensWithdrawn-4800B ± 0%800B ± 0%~(all equal)
ExportType/composite_type-4120B ± 0%120B ± 0%~(all equal)
ExportType/simple_type-40.00B 0.00B ~(all equal)
InterpretRecursionFib-41.19MB ± 0%1.19MB ± 0%~(all equal)
NewInterpreter/new_interpreter-4944B ± 0%944B ± 0%~(all equal)
NewInterpreter/new_sub-interpreter-4200B ± 0%200B ± 0%~(all equal)
ParseArray-42.69MB ± 2%2.69MB ± 2%~(p=0.667 n=2+2)
ParseDeploy/byte_array-44.14MB ± 2%4.20MB ± 0%~(p=0.333 n=2+2)
ParseDeploy/decode_hex-4214kB ± 0%214kB ± 0%~(p=0.333 n=2+2)
ParseFungibleToken/With_memory_metering-429.8kB ± 0%29.8kB ± 0%~(p=1.000 n=2+2)
ParseFungibleToken/Without_memory_metering-429.8kB ± 0%29.8kB ± 0%~(p=1.000 n=2+2)
ParseInfix-41.92kB ± 0%1.92kB ± 0%~(p=0.333 n=2+2)
QualifiedIdentifierCreation/One_level-40.00B 0.00B ~(all equal)
QualifiedIdentifierCreation/Three_levels-464.0B ± 0%64.0B ± 0%~(all equal)
RuntimeScriptNoop-43.36kB ± 0%3.36kB ± 0%~(all equal)
SuperTypeInference/arrays-496.0B ± 0%96.0B ± 0%~(all equal)
SuperTypeInference/composites-40.00B 0.00B ~(all equal)
SuperTypeInference/integers-40.00B 0.00B ~(all equal)
ValueIsSubtypeOfSemaType-448.0B ± 0%48.0B ± 0%~(all equal)
 
allocs/opdelta
DecodeBatchEventsCCF-41.48M ± 0%1.48M ± 0%~(p=1.000 n=1+1)
DecodeBatchEventsJSON-44.60M ± 0%4.60M ± 0%~(p=1.000 n=1+1)
DecodeCCF/FlowFees.FeesDeducted-430.0 ± 0%30.0 ± 0%~(all equal)
DecodeCCF/FlowFees.TokensWithdrawn-426.0 ± 0%26.0 ± 0%~(all equal)
DecodeCCF/FlowIDTableStaking.DelegatorRewardsPaid-430.0 ± 0%30.0 ± 0%~(all equal)
DecodeCCF/FlowIDTableStaking.EpochTotalRewardsPaid-432.0 ± 0%32.0 ± 0%~(all equal)
DecodeCCF/FlowIDTableStaking.NewWeeklyPayout-426.0 ± 0%26.0 ± 0%~(all equal)
DecodeCCF/FlowIDTableStaking.RewardsPaid-429.0 ± 0%29.0 ± 0%~(all equal)
DecodeCCF/FlowToken.TokensDeposited-431.0 ± 0%31.0 ± 0%~(all equal)
DecodeCCF/FlowToken.TokensDeposited_with_nil_receiver-429.0 ± 0%29.0 ± 0%~(all equal)
DecodeCCF/FlowToken.TokensMinted-426.0 ± 0%26.0 ± 0%~(all equal)
DecodeCCF/FlowToken.TokensWithdrawn-431.0 ± 0%31.0 ± 0%~(all equal)
DecodeJSON/FlowFees.FeesDeducted-4124 ± 0%124 ± 0%~(all equal)
DecodeJSON/FlowFees.TokensWithdrawn-469.0 ± 0%69.0 ± 0%~(all equal)
DecodeJSON/FlowIDTableStaking.DelegatorRewardsPaid-4100 ± 0%100 ± 0%~(all equal)
DecodeJSON/FlowIDTableStaking.EpochTotalRewardsPaid-4157 ± 0%157 ± 0%~(all equal)
DecodeJSON/FlowIDTableStaking.NewWeeklyPayout-468.0 ± 0%68.0 ± 0%~(all equal)
DecodeJSON/FlowIDTableStaking.RewardsPaid-485.0 ± 0%85.0 ± 0%~(all equal)
DecodeJSON/FlowToken.TokensDeposited-493.0 ± 0%93.0 ± 0%~(all equal)
DecodeJSON/FlowToken.TokensDeposited_with_nil_receiver-484.0 ± 0%84.0 ± 0%~(all equal)
DecodeJSON/FlowToken.TokensMinted-469.0 ± 0%69.0 ± 0%~(all equal)
DecodeJSON/FlowToken.TokensWithdrawn-493.0 ± 0%93.0 ± 0%~(all equal)
EncodeBatchEventsCCF-41.00M ± 0%1.00M ± 0%~(all equal)
EncodeBatchEventsJSON-4902k ± 0%902k ± 0%~(p=1.000 n=1+1)
EncodeCCF/FlowFees.FeesDeducted-420.0 ± 0%20.0 ± 0%~(all equal)
EncodeCCF/FlowFees.TokensWithdrawn-420.0 ± 0%20.0 ± 0%~(all equal)
EncodeCCF/FlowIDTableStaking.DelegatorRewardsPaid-420.0 ± 0%20.0 ± 0%~(all equal)
EncodeCCF/FlowIDTableStaking.EpochTotalRewardsPaid-420.0 ± 0%20.0 ± 0%~(all equal)
EncodeCCF/FlowIDTableStaking.NewWeeklyPayout-420.0 ± 0%20.0 ± 0%~(all equal)
EncodeCCF/FlowIDTableStaking.RewardsPaid-420.0 ± 0%20.0 ± 0%~(all equal)
EncodeCCF/FlowToken.TokensDeposited-421.0 ± 0%21.0 ± 0%~(all equal)
EncodeCCF/FlowToken.TokensDeposited_with_nil_receiver-421.0 ± 0%21.0 ± 0%~(all equal)
EncodeCCF/FlowToken.TokensMinted-420.0 ± 0%20.0 ± 0%~(all equal)
EncodeCCF/FlowToken.TokensWithdrawn-421.0 ± 0%21.0 ± 0%~(all equal)
EncodeJSON/FlowFees.FeesDeducted-420.0 ± 0%20.0 ± 0%~(all equal)
EncodeJSON/FlowFees.TokensWithdrawn-413.0 ± 0%13.0 ± 0%~(all equal)
EncodeJSON/FlowIDTableStaking.DelegatorRewardsPaid-417.0 ± 0%17.0 ± 0%~(all equal)
EncodeJSON/FlowIDTableStaking.EpochTotalRewardsPaid-426.0 ± 0%26.0 ± 0%~(all equal)
EncodeJSON/FlowIDTableStaking.NewWeeklyPayout-413.0 ± 0%13.0 ± 0%~(all equal)
EncodeJSON/FlowIDTableStaking.RewardsPaid-416.0 ± 0%16.0 ± 0%~(all equal)
EncodeJSON/FlowToken.TokensDeposited-420.0 ± 0%20.0 ± 0%~(all equal)
EncodeJSON/FlowToken.TokensDeposited_with_nil_receiver-415.0 ± 0%15.0 ± 0%~(all equal)
EncodeJSON/FlowToken.TokensMinted-414.0 ± 0%14.0 ± 0%~(all equal)
EncodeJSON/FlowToken.TokensWithdrawn-419.0 ± 0%19.0 ± 0%~(all equal)
ExportType/composite_type-43.00 ± 0%3.00 ± 0%~(all equal)
ExportType/simple_type-40.00 0.00 ~(all equal)
InterpretRecursionFib-418.9k ± 0%18.9k ± 0%~(all equal)
NewInterpreter/new_interpreter-415.0 ± 0%15.0 ± 0%~(all equal)
NewInterpreter/new_sub-interpreter-44.00 ± 0%4.00 ± 0%~(all equal)
ParseArray-459.6k ± 0%59.6k ± 0%~(p=0.333 n=2+2)
ParseDeploy/byte_array-489.4k ± 0%89.4k ± 0%~(p=1.000 n=2+2)
ParseDeploy/decode_hex-463.0 ± 0%63.0 ± 0%~(all equal)
ParseFungibleToken/With_memory_metering-4773 ± 1%773 ± 1%~(p=1.000 n=2+2)
ParseFungibleToken/Without_memory_metering-4773 ± 1%773 ± 1%~(p=1.000 n=2+2)
ParseInfix-448.0 ± 0%48.0 ± 0%~(all equal)
QualifiedIdentifierCreation/One_level-40.00 0.00 ~(all equal)
QualifiedIdentifierCreation/Three_levels-42.00 ± 0%2.00 ± 0%~(all equal)
RuntimeScriptNoop-450.0 ± 0%50.0 ± 0%~(all equal)
SuperTypeInference/arrays-43.00 ± 0%3.00 ± 0%~(all equal)
SuperTypeInference/composites-40.00 0.00 ~(all equal)
SuperTypeInference/integers-40.00 0.00 ~(all equal)
ValueIsSubtypeOfSemaType-41.00 ± 0%1.00 ± 0%~(all equal)
 

Copy link
Member

@SupunS SupunS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! My only concern/question is what the performance would be for converting the static-type to bytes (encoding) vs creating a new static type. I guess we can only find out by running the actual migration with it. So good idea to have behind a flag.

@turbolent
Copy link
Member Author

@SupunS

My only concern/question is what the performance would be for converting the static-type to bytes (encoding) vs creating a new static type. I guess we can only find out by running the actual migration with it. So good idea to have behind a flag.

Yeah, that's a good point! I think the encoding is fairly similar to the type ID construction (in orders of magnitude), but slightly more expensive computation and memory.

I can imagine that for many simple cases in the static type migration the overhead of the caching might be larger than just running the migration. Though for the entitlements migration the caching will likely be worth it.

I'll put the two caches behind two separate flags.

@turbolent turbolent merged commit 81170a2 into master Jun 5, 2024
12 checks passed
@turbolent turbolent deleted the bastian/cache-static-types-in-migration branch June 5, 2024 17:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants