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

Thejas M Nair commented on HIVE-5019:
-------------------------------------

In the following change, there is a bug. The tmp needs to get 'reset' after the 
toString(). Not sure what the most efficient way to do that is (delete vs new 
StringBuilder).

{code}
+        StringBuilder tmp = new StringBuilder("");
         for (String key : properties.keySet()) {
           if (properties.get(key) != null && !duplicateProps.contains(key)) {
-            realProps.add("  '" + key + "'='" +
-                
escapeHiveCommand(StringEscapeUtils.escapeJava(properties.get(key))) + "'");
+            tmp.append("  '");
+            tmp.append(key);
+            tmp.append("'='");
+            
tmp.append(escapeHiveCommand(StringEscapeUtils.escapeJava(properties.get(key))));
+            tmp.append("'");
+            realProps.add(tmp.toString());
           }
{code}

This does make the code more verbose and less readable. I am not very convinced 
that in cases like the one above, the use of StringBuilder would make a 
difference. The compiler would usually replace + with use of StringBuilder in 
simple cases like this.

bq. Yes, they do mostly replace + with StringBuilder.append(). However this is 
not always the case it seems. I ran some tests and they showed that using the 
StringBuilder when appending strings is 57% faster than using the + operator 
(using the StringBuffer took 122 milliseconds whilst the + operator took 284 
milliseconds).

Can you please upload the test code you used ? Can you try running it longer 
(say more than 5-10 seconds), so any noise is filtered out. 


> Use StringBuffer instead of += (issue 1)
> ----------------------------------------
>
>                 Key: HIVE-5019
>                 URL: https://issues.apache.org/jira/browse/HIVE-5019
>             Project: Hive
>          Issue Type: Sub-task
>            Reporter: Benjamin Jakobus
>            Assignee: Benjamin Jakobus
>         Attachments: HIVE-5019.2.patch.txt, HIVE-5019.3.patch.txt
>
>
> Issue 1 - use of StringBuilder over += inside loops. 
> java/org/apache/hadoop/hive/ql/optimizer/physical/GenMRSkewJoinProcessor.java
> java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java
> java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java
> java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
> java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
> java/org/apache/hadoop/hive/ql/plan/ConditionalResolverMergeFiles.java
> java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
> java/org/apache/hadoop/hive/ql/security/authorization/BitSetCheckedAuthorizationProvider.java
> java/org/apache/hadoop/hive/ql/stats/jdbc/JDBCStatsUtils.java
> java/org/apache/hadoop/hive/ql/udf/UDFLike.java
> java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSentences.java
> java/org/apache/hadoop/hive/ql/udf/generic/NumDistinctValueEstimator.java
> java/org/apache/hadoop/hive/ql/udf/ptf/NPath.java



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to