[ 
https://issues.apache.org/jira/browse/HBASE-18555?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16124551#comment-16124551
 ] 

Hudson commented on HBASE-18555:
--------------------------------

SUCCESS: Integrated in Jenkins build HBase-2.0 #315 (See 
[https://builds.apache.org/job/HBase-2.0/315/])
HBASE-18555: Remove redundant familyMap.put() from addxxx() of (jerryjch: rev 
8cebf7f1a818a419ef32a48a24c3b5df27dd980d)
* (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Get.java
* (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Mutation.java
* (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Scan.java
* (edit) 
hbase-client/src/main/java/org/apache/hadoop/hbase/client/Increment.java
* (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Append.java
* (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Delete.java
* (edit) hbase-client/src/main/java/org/apache/hadoop/hbase/client/Put.java


> Remove redundant familyMap.put() from addxxx() of sub-classes of Mutation and 
> Query
> -----------------------------------------------------------------------------------
>
>                 Key: HBASE-18555
>                 URL: https://issues.apache.org/jira/browse/HBASE-18555
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client
>            Reporter: Xiang Li
>            Assignee: Xiang Li
>            Priority: Minor
>             Fix For: 3.0.0, 1.5.0, 2.0.0-alpha-2
>
>         Attachments: HBASE-18555.master.000.patch, 
> HBASE-18555.master.001.patch, HBASE-18555.master.002.patch
>
>
> In addxxx() functions of Mutation(Append, Delete, Increment and Put) and 
> Query(Get and Scan), there are redundant Map#put() calls which could be 
> removed to improve the performance.
> For example, in Put#addColumn() and addImmutable(), after getting the cell 
> list of the given family and add the cell into the list, the code puts 
> (key=family, value=list) into familyMap.
> In addColumn(), it is like
> {code}
>     List<Cell> list = getCellList(family);
>     KeyValue kv = createPutKeyValue(family, qualifier, ts, value);
>     list.add(kv);
>     familyMap.put(CellUtil.cloneFamily(kv), list); // <-- here
>     return this;
> {code}
> In addImmutable(), it is like
> {code}
>     List<Cell> list = getCellList(family);
>     KeyValue kv = createPutKeyValue(family, qualifier, ts, value, tag);
>     list.add(kv);
>     familyMap.put(family, list); // <-- here
>     return this;
> {code}
> I think those put() for Map only take effect when getCellList(family) returns 
> a new allocated ArrayList. When the list for a family already exist, put() 
> for Map will update the value to the reference of the list, but actually, the 
> reference of the list is not changed.
> Those put() do not do any harm in terms of the correctness when they are 
> here. But it could be removed to improve the performance. familyMap searches 
> for key and set the new value and return the old value. Those operation take 
> some time but actually are not needed. 
> The put() could be moved into Mutation#getCellList(family)



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to