Joel Croteau created THRIFT-4555: ------------------------------------ Summary: Getter of binary field in Java creates unnecessary copy Key: THRIFT-4555 URL: https://issues.apache.org/jira/browse/THRIFT-4555 Project: Thrift Issue Type: Bug Components: Java - Compiler Affects Versions: 0.11.0 Reporter: Joel Croteau
The get[field] method in generated Java code generates a new copy of a binary field every time it is called. This seems incredibly inefficient. Take a simple example struct: {code:java} struct StructWithBinary { 1: required binary field; } {code} a portion of the generated code for this is: {code:java} public byte[] getField() { setField(org.apache.thrift.TBaseHelper.rightSize(field)); return field == null ? null : field.array(); } ... public StructWithBinary setField(java.nio.ByteBuffer field) { this.field = org.apache.thrift.TBaseHelper.copyBinary(field); return this; } {code} So whenever getField is called, setField calls copyBinary and generates another copy. This adds quite a lot of overhead to the getter here and should be fixed. -- This message was sent by Atlassian JIRA (v7.6.3#76005)