carterkozak commented on a change in pull request #352: URL: https://github.com/apache/httpcomponents-client/pull/352#discussion_r814900201
########## File path: httpclient5/src/main/java/org/apache/hc/client5/http/impl/ExecSupport.java ########## @@ -45,7 +45,29 @@ public static long getNextExecNumber() { } public static String getNextExchangeId() { - return String.format("ex-%010d", COUNT.incrementAndGet()); + return createId(COUNT.incrementAndGet()); + } + + /** + * Create an exchange ID. + * + * Hand rolled equivalent to `String.format("ex-%010d", value)` optimized to reduce + * allocation and CPU overhead. + */ + static String createId(long value) { + String longString = Long.toString(value); + return "ex-" + zeroPad(10 - longString.length()) + longString; Review comment: Either a switch: ```java switch (longString.length()) { // It's too bad java.lang.Long.stringSize(long) is package-private case 1: return "ex-000000000" + longString; /* etc... */ case 9: return "ex-0" + longString; default: return "ex-" + longString; } ``` Or an array of pre-computed values where we bounds-check and load a prefix based on the strlen of the value: ```java private static final prefixes = new String[] {"ex-000000000", /* etc... */ ex-0"} return len > 10 ? "ex-" + longString : prefixes[len-1] + longString; ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org