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

Jason Lowe commented on YARN-6768:
----------------------------------

Thanks for updating the patch!  Nice to see the state fall away and things get 
simpler as a result.

The toString paths look great, just a few nits on the conversion back from a 
String.

Nit: It is less work to do indexOf('_') than indexOf("_")

Rather than searching for the first underscore, creating a substring starting 
at 0 to that position, and then comparing that substring to a known prefix we 
can avoid some object creation and a redundant prefix scan by leveraging 
startsWith and the length of the known prefix.  Similarly we can use 
String#regionMatches to avoid a substring creation for the epoch string.  For 
example:
{code}
    int pos1 = CONTAINER_PREFIX.length();
    if (!containerIdStr.startsWith(CONTAINER_PREFIX) || 
containerIdStr.charAt(pos1) != '_') {
      throw new IllegalArgumentException("Invalid ContainerId prefix: "
          + containerIdStr.substring(0, pos1 + 1));
    }
    int pos2 = containerIdStr.indexOf('_', pos1 + 1);
    String clusterTimestamp;
    if (containerIdStr.regionMatches(pos1 + 1, EPOCH_PREFIX, 0, 
EPOCH_PREFIX.length()) {
      String epochStr = containerId.substring(pos1 + 1 + EPOCH_PREFIX.length(), 
pos2);
      epoch = Integer.parseInt(epochStr);
      ....
{code}

The use of startsWith to avoid the initial substring applies to app attempt and 
app ID parsing as well.  The test gets even cheaper if we bother to precompute 
a String that is the prefix with the underscore already attached because we 
wouldn't need to do the extra check for the '_' character.

This patch also causes some of the TestConverterUtils tests to fail in 
hadoop-yarn-common.  Arguably some of these conversion tests should be 
moved/adapted to hadoop-yarn-api so they are closer to the code in question.

> Improve performance of yarn api record toString and fromString
> --------------------------------------------------------------
>
>                 Key: YARN-6768
>                 URL: https://issues.apache.org/jira/browse/YARN-6768
>             Project: Hadoop YARN
>          Issue Type: Improvement
>            Reporter: Jonathan Eagles
>            Assignee: Jonathan Eagles
>         Attachments: YARN-6768.1.patch, YARN-6768.2.patch, YARN-6768.3.patch, 
> YARN-6768.4.patch
>
>




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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to