drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jinfengni <...@git.apache.org>
Subject [GitHub] drill pull request #704: DRILL-5125: Provide option to use generic code for ...
Date Thu, 30 Mar 2017 23:12:44 GMT
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 infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message