[
https://issues.apache.org/jira/browse/IGNITE-4645?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15863560#comment-15863560
]
Vladimir Ozerov edited comment on IGNITE-4645 at 2/13/17 12:18 PM:
-------------------------------------------------------------------
[~gvvinblade], my comments:
1) {{GridBinaryMarshaller}} - we perform new class descriptor lookup. Let's
make sure that it is re-used inside writer, so that we do not need to perform
it twice.
2) {{BinaryWriterSchemaHolder}} - constants should be moved to {{BinaryUtils}}.
They must have meaningful names, as currently it is impossible to understand
what they are about.
3) Moreover, {{FOOTER_PER_FIELD_SIZE_4 == FOOTER_PER_FIELD_SIZE_1 + 4}}, where
{{4}} is additional overhead caused be disabled compact footers. The same goes
for {{FOOTER_PER_FIELD_SIZE_5}} and {{FOOTER_PER_FIELD_SIZE_6}}. Please remove
these three constants and introduce separate constant for compact footer.
4) {{BinaryUtils}} - same as p.3, several values are mixed into one for
{{P_X_BYTE_SIZE}} constants. How {{P_8_BYTE_SIZE}} can be equal to {{9}}?
Instead, it should be {{8}}, and {{1}} should be moved to separate constant.
5) {{BinaryClassDescriptor}} - please avoid wildcards in imports.
6) {{BinaryClassDescriptor}} - another magic constant {{-1}}.
was (Author: vozerov):
[~gvvinblade], my comments:
1) {{GridBinaryMarshaller}} - we perform new class descriptor lookup. Let's
make sure that it is re-used inside writer, so that we do not need to perform
it twice.
2) {{BinaryWriterSchemaHolder}} - constants should be moved to {{BinaryUtils}}.
They must have meaningful names, as currently it is impossible to understand
what they are about.
3) Moreover, {{FOOTER_PER_FIELD_SIZE_4 == FOOTER_PER_FIELD_SIZE_1 + 4]}, where
{{4}} is additional overhead caused be disabled compact footers. The same goes
for {{FOOTER_PER_FIELD_SIZE_5}} and {{FOOTER_PER_FIELD_SIZE_6}}. Please remove
these three constants and introduce separate constant for compact footer.
4) {{BinaryUtils}} - same as p.3, several values are mixed into one for
{{P_X_BYTE_SIZE}} constants. How {{P_8_BYTE_SIZE}} can be equal to {{9}}?
Instead, it should be {{8}}, and {{1}} should be moved to separate constant.
5) {{BinaryClassDescriptor}} - please avoid wildcards in imports.
6) {{BinaryClassDescriptor}} - another magic constant {{-1}}.
> Best effort to avoid extra copying in binary marshaller
> -------------------------------------------------------
>
> Key: IGNITE-4645
> URL: https://issues.apache.org/jira/browse/IGNITE-4645
> Project: Ignite
> Issue Type: Bug
> Components: binary
> Reporter: Yakov Zhdanov
> Assignee: Igor Seliverstov
> Fix For: 1.9
>
>
> If we marshal a class that contain only primitives then we can predict the
> final byte array size and avoid copies to grow array and final trimming.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)