[
https://issues.apache.org/jira/browse/AVRO-1277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13609281#comment-13609281
]
Leo Romanoff commented on AVRO-1277:
------------------------------------
@Doug:
1) If I add a test to Perf.java, I cannot directly compare it to the
unoptimized reflection-based approach, as I changed it, or? Of course, one can
try then this Perf test with the old and with the new patched version and
compare results. Is it what you mean?
2) I'm not sure I can move Accessor check to the start, as it currently happens
after the array object is created. And at the start of the method I don't have
the array object yet. More over, if I'd call super.readArray() it would create
this array on its own. But may be there is a way to check the type of array
elements without creating it?
3) Done :-)
@Holger: Yes, there is a potential for leaks. But quick grep on Avro sources
shows that it is not the only use of ThreadLocal. In addition to what Doug
said, I can also think of caches which clean-up themselves after a certain
timeout or period of inactivity.
> Improve performance of reflection-based serializers
> ---------------------------------------------------
>
> Key: AVRO-1277
> URL: https://issues.apache.org/jira/browse/AVRO-1277
> Project: Avro
> Issue Type: Improvement
> Components: java
> Affects Versions: 1.7.4
> Reporter: Leo Romanoff
> Priority: Minor
> Attachments: AVRO-1277.patch
>
>
> I've played a bit with Avro serialization based on reflection, i.e. with the
> classes from org.apache.avro.generic package.
> It works fine in this mode, but is rather slow compared to such frameworks
> like protostuff or kryo.
> Quick look at the source code has shown that a lot of reflection-based
> operations and class lookups are not cached. And such operations are usually
> pretty expensive when executed by a JVM.
> So I changed some of org.apache.avro.generic classes, introduced caching and
> a few other optimizations. Now it seems to perform much better.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira