As described in #88818 (comment), Go 1.19 has a significant performance regression when comparing structs. Because of this, we had to introduce manual struct comparisons (explicitly listing each field) and give up certain inlining opportunities to recover the performance.
This regression will been fixed in Go 1.20, but won't be backported to 1.19. We should consider reverting back to using struct comparisons once we build with Go 1.20. Relevant changes:
Jira issue: CRDB-20169
As described in #88818 (comment), Go 1.19 has a significant performance regression when comparing structs. Because of this, we had to introduce manual struct comparisons (explicitly listing each field) and give up certain inlining opportunities to recover the performance.
This regression will been fixed in Go 1.20, but won't be backported to 1.19. We should consider reverting back to using struct comparisons once we build with Go 1.20. Relevant changes:
Timestamp.IsEmpty()performance #88911EncodeMVCCValuestruct comparison #88989Jira issue: CRDB-20169