Description
The ConnectSchema implementation computes the hash code every time its needed, and equals(Object) is a deep equality check. This extra work can be expensive for large schemas, especially in code like the AvroConverter (or rather AvroData in the converter) that uses instances as keys in a hash map that then requires significant use of hashCode and equals.
The ConnectSchema is an immutable object and should at a minimum precompute the hash code. Also, the order that the fields are compared in equals(...) should use the cheapest comparisons first (e.g., the name field is one of the last fields to be checked). Finally, it might be worth considering having each instance precompute and cache a string or byte[] representation of all fields that can be used for faster equality checking.
Attachments
Attachments
Issue Links
- links to