Java isset space optimization
-----------------------------

                 Key: THRIFT-1469
                 URL: https://issues.apache.org/jira/browse/THRIFT-1469
             Project: Thrift
          Issue Type: Improvement
          Components: Java - Compiler
    Affects Versions: 0.8
            Reporter: Brian Bloniarz
            Priority: Minor


Attached is a small patch and unit tests for Java to optimize the heapspace
footprint of (for example):

struct OptIntPair {
    1: i32 a
    2: i32 b
}

Each instance will have an __isset_bit_vector which points to a BitSet,
which points to a long[], adding around 50 bytes of overhead to this object.

The patch changes this by storing a raw byte and doing direct bitfield 
operations, like:
  byte __isset_bitfield;

  public void unsetB() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __B_ISSET_ID);
  }
A little nasty, but a big space win: on my machine, this brings down the total
size of an OptIntPair from 85 bytes to 25 bytes. A BitSet gets used as a 
fallback
when more than 64 __isset entries are needed.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to