Hi,

I'm afraid that at the moment I'm not able to do it, because I'm
rather busy with some other projects at work. And I do not use
DirectMemory yet ;-(, but just plan to do so in the future. But I
follow the development of this project with a big interest.

As for the required changes, I think they can be rather trivial. There
are some unit tests that show how to use the new IdStrategy feature:

http://code.google.com/searchframe#0-WbZJYkJ-4/trunk/protostuff-runtime-registry/src/test/java/com/dyuproject/protostuff/runtime/IncrementalRuntimeObjectSchemaTest.java&q=IdStrategy%20package:http://protostuff\.googlecode\.com&sq=&ct=rc&cd=6

http://code.google.com/searchframe#0-WbZJYkJ-4/trunk/protostuff-runtime-registry/src/test/java/com/dyuproject/protostuff/runtime/ExplicitRuntimeObjectSchemaTest.java&q=IdStrategy%20package:http://protostuff\.googlecode\.com&sq=&ct=rc&cd=7

So, basically one needs to register a mapping from a class to its
numeric id. Depending on the strategy, you can assign the numeric id
yourself (ExplicitIdStrategy) or let protostuff do it for you
(IncrementalIdStrategy). Once this is done, no further changes are
required.

See also this page for some info at
http://code.google.com/p/protostuff/wiki/ProtostuffRuntime (in the
Performance Guidelines section)

-Roman


On Thu, Apr 19, 2012 at 11:00 AM, Olivier Lamy <[email protected]> wrote:
> Hello,
> Nice and thanks for the tip.
> Would you like contribute a patch ?
>
> 2012/4/19 Roman Levenstein:
>> Hi,
>>
>> I just wanted to mention on this mailing list, that there is a new
>> version of the Protostuff that supports a more efficient serialization
>> (see 
>> https://groups.google.com/forum/?fromgroups#!topic/protostuff/MeTR9J_ClSM)
>>
>> If you make use of IdStrategies (see more info at
>> http://code.google.com/p/protostuff/wiki/ThingsYouNeedToKnow), you can
>> get a much smaller serialized representation and it is also much
>> faster to produce.
>>
>>   
>> -Dprotostuff.runtime.id_strategy_factory=com.dyuproject.protostuff.runtime.IncrementalIdStrategy$Factory
>>       By default (if property is not present), the DefaultIdStrategy
>> is used, which means a polymorphic pojo is identified by serializing
>> its type as a string (FQCN). If you set the above property, int ids
>> are generated on the fly (thread-safe/atomic) and are mapped to your
>> polymorphic pojos. The end result is faster ser/deser and the
>> serialized size is smaller (around 1/3-1/4 the size of the default
>> strategy)
>>       You can also reserve the first few ids (via
>> IncrementalIdStrategy.Registry) for your core pojos (remember that ids
>> 1-15 are serialized as 1-byte together with the protobuf tag), as well
>> as set the max size for the ArrayList which holds the ids.
>>
>> I think DirectMemory can greatly benefit from this feature, because
>> now you can keep more objects in the same amount of memory and you get
>> much faster serialization/deserialization.
>>
>> Best Regards,
>>  Roman
>>
>> P.S. If it is not against Apache policies, would it be possible to
>> have a Google Groups for the direct-memory mailing lists, so that they
>> can be used as a different web-based front-end? It could be much more
>> convenient for many people I guess.
>
> Not possible. That's against ASF policies.

Reply via email to