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

Benedict Jin commented on HBASE-18470:
--------------------------------------

Hi, [~tedyu]. Thank you for comment. Sure, skipping add comma is a good 
solution and i tried it in the beginning. But i changed my mind after some 
performance tests that seems `substring` solution is always faster than 
`skipping add comma`. Details is here: 

```java
/*
JVM: -ea -Xmx512M -Xms512M -Xmn128M -XX:+AlwaysPreTouch
Time: 0.023948 ms
Time: 0.012752 ms
  */
@Test
public void testStringBuilder() {
    Set<String> uniqAddr = new HashSet<>();
    StringBuilder addrs = new StringBuilder();
    long begin, performanceTime;
    {
        uniqAddr.add("a");
        uniqAddr.add("b");
        uniqAddr.add("c");
        begin = System.nanoTime();
        int count = 0, addrLen = uniqAddr.size();
        for (String addr : uniqAddr) {
            addrs.append(addr);
            count++;
            if (count != addrLen) {
                addrs.append(", ");
            }
        }
        String withoutTail = addrs.toString();
        performanceTime = System.nanoTime() - begin;
        _log.info("Time: {} ms", performanceTime * Math.pow(10, -6));
        assertEquals("a, b, c", withoutTail);
    }
    {
        addrs = new StringBuilder();
        uniqAddr.clear();
        uniqAddr.add("a");
        uniqAddr.add("b");
        uniqAddr.add("c");
        begin = System.nanoTime();
        for (String addr : uniqAddr) {
            addrs.append(addr).append(", ");
        }
        String withoutTail = uniqAddr.size() > 0 ? addrs.substring(0, 
addrs.length() - 2) : addrs.toString();
        performanceTime = System.nanoTime() - begin;
        _log.info("Time: {} ms", performanceTime * Math.pow(10, -6));
        assertEquals("a, b, c", withoutTail);
        assertEquals("a, b, c", uniqAddr.size() > 0 ?
                addrs.delete(addrs.length() - 2, addrs.length()).toString() : 
addrs.toString());
    }
}
```

(Full code: 
https://github.com/asdf2014/yuzhouwan/blob/master/yuzhouwan-hacker/src/test/java/com/yuzhouwan/hacker/algorithms/collection/StringTest.java#L38)

> `RetriesExhaustedWithDetailsException#getDesc` describe is not right
> --------------------------------------------------------------------
>
>                 Key: HBASE-18470
>                 URL: https://issues.apache.org/jira/browse/HBASE-18470
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>            Reporter: Benedict Jin
>            Assignee: Benedict Jin
>         Attachments: HBASE-18470.master.001.patch
>
>   Original Estimate: 72h
>  Remaining Estimate: 72h
>
> The describe from `RetriesExhaustedWithDetailsException#getDesc` is `
> org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 3 
> actions: FailedServerException: 3 times, `, there is a not need ', ' in the 
> tail.



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

Reply via email to