[ https://issues.apache.org/jira/browse/TAP5-2332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14006057#comment-14006057 ]
Jochen Kemnade edited comment on TAP5-2332 at 5/22/14 3:59 PM: --------------------------------------------------------------- Please, let us stop discussing this. We just have different opinions. Lance and Thiago don't want to avoid introducing more complexity and Michael and I want to make the code faster. Let's try to meet somewhere in between. I think, we are not too far apart anyway. I understand that Lance and Thiago are neither opposed to introducing the concat method, nor to changing *some* of the existing code to use it. Please give the some time to create a patch, afterward, we can go into a more detailed discussion about that. was (Author: jkemnade): Please, let us stop discussing this. We just have different opinions. Lance and Thiago don't want to avoid introducing more complexity and Michael and I want to make the code faster. Let's try to meet somewhere in between. I think, we are not too far apart anyway. I understand that Lance and Thiago are not opposed to introducing the concat method, nor to changing *some* of the existing code to use it. Please give the some time to create a patch, afterward, we can go into a more detailed discussion about that. > Optimize String concatenation performance > ----------------------------------------- > > Key: TAP5-2332 > URL: https://issues.apache.org/jira/browse/TAP5-2332 > Project: Tapestry 5 > Issue Type: Improvement > Reporter: Michael Mikhulya > Assignee: Jochen Kemnade > Priority: Minor > Labels: performance > Attachments: 0001-TAP5-2332-get-rid-of-String.format-usage.patch, > profile-patched.png, profile-vanilla.png > > > During profiling I found that String.format provides much load on CPU. > In many cases in Tapestry String.format can be easily replaced with simple > String concatenation. > Simple JMH (http://openjdk.java.net/projects/code-tools/jmh/) test > {code:java} > public class FormatVsConcat { > private static final String format = "This is a test string with %s"; > private static final String concat1 = "This is a test string with "; > private static final String concat2 = "test word"; > @GenerateMicroBenchmark > public String format() { > return String.format(format, concat2); > } > @GenerateMicroBenchmark > public String concat() { > return concat1 + concat2; > } > } > {code} > shows, that concatenation is 366(!) times faster. > I removed only hot places in tapestry and get following results with apache > benchmark: > *Not patched* tapestry version: > Requests per second: *21.38 /sec* (mean) > Time per request: *46.764 [ms]* (mean) > *Patched* tapestry version: > Requests per second: *27.77 /sec* (mean) > Time per request: *36.013 [ms]* (mean) > So we gained 10ms per request or 20% of rendering time. > If you don't mind I would like to get rid of String.format in all places of > Tapestry and provide patch. I fixed only hot places which appeared during > ab-profiling of one concrete page. So it is very likely that not all hot > places were found and fixed. -- This message was sent by Atlassian JIRA (v6.2#6252)