Darryl Green created AVRO-2037:
----------------------------------
Summary: Use std::any where available
Key: AVRO-2037
URL: https://issues.apache.org/jira/browse/AVRO-2037
Project: Avro
Issue Type: Improvement
Components: c++
Reporter: Darryl Green
The use of boost::any to hold union types causes a significant performance hit
especially for small types - in particular the when using [null,primitive] for
optional primitive type elements of a schema. Most (all?) implementations of
std::any include a small value optimisation that avoids allocation overhead for
scalars and other small types. Its a little unfortunate that the performance of
a C++ binding of r a notionally high performance serialization format performs
so poorly in this case (note - I had previously proposed using boost::variant
which would address this problem but would fail to support recursive types or
truly huge numbers of distinct types in a union). Obviously this requires C++
17 but could fall back to boost::any for older compilers.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)