Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
-
None
Description
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
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; } }
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.
Attachments
Attachments
Issue Links
- is related to
-
TAP5-1874 OperationTracker description logging improvement
- In Progress