Github user jinfengni commented on a diff in the pull request:
https://github.com/apache/drill/pull/704#discussion_r109058076
--- Diff: exec/vector/src/main/codegen/templates/FixedValueVectors.java ---
@@ -281,6 +282,11 @@ public void copyFromSafe(int fromIndex, int thisIndex,
${minor.class}Vector from
copyFrom(fromIndex, thisIndex, from);
}
+ @Override
+ public void copyEntry(int toIndex, ValueVector from, int fromIndex) {
+ ((${minor.class}Vector) from).data.getBytes(fromIndex * ${type.width},
data, toIndex * ${type.width}, ${type.width});
--- End diff --
Throughout all the value vector classes, this new "copyEntry" method has to
explicitly downcast from interface ValueVector to a subclass. Such cast happens
for each value copied. I' not sure how performance overhead it could possibly
incur : JVM has to check the input type, and raise ClassCastException in case
of error.
Compared with the existing method, I think cast only happens in doSetup(),
which is called for each new schema.
Also, "copyEntry" uses data.getBytes(), while copyFromSafe() uses
setInt(..., from.data.getInt()). I'm not sure the performance difference
comes from the difference of generated code vs generic class, or the difference
of the underneath implementation.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---