Hi,
We have been using Thrift objects when we want to serialize to disk and back 
(in C++ and Java). While profiling, we have noticed that hard written 
serializers for our specific objects can perform much better (~2x) than Thrift. 
 While we understand it is unreasonable to expect Thrift to match their 
performance given the generic usecases it solves, we have been were wondering 
if we can somehow keep using the auto-generated serialization-deserialization 
code but not pay for the other abstractions provided.
So, we don't care about the language/architecture independence provided or the 
backward compatibility. And suggestions on possible performance improvements as 
a tradeoff for some features would be useful.

We have tried TBinaryProtocol and TCompactProtocol along with TMemoryBuffer.

The objects we are interested in as similar to the one below:

Java:
public class MeasureSet {
public double[] simple;
public ArrayList<ArrayList<Long>> complex;
public ArrayList<ByteBuffer> others;
}

IDL:
struct ThriftMeasureSet {
1:list<double> simple,
2:list<list<i64>> complex,
3:list<binary> others
}

We have tried Protocol Buffer as well and find their performance to be similar 
to Thrift. Any pointers as welcome.

Thanks and Regards,
Anand

Reply via email to