tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Mikhulya (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TAP5-2332) Get rid of String.format usage
Date Tue, 20 May 2014 08:45:39 GMT

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

Michael Mikhulya commented on TAP5-2332:
----------------------------------------

I used following command for benchmarking:
warm up phase:
{quote}
ab -n 1000 http://my.site.com/some/parameters/here
ab -n 1000 http://my.site.com/some/parameters/here
ab -n 1000 http://my.site.com/some/parameters/here
{quote}
after it I check that there is no big difference between second and third launches.

benchmark phase:
{quote}
ab -n 4000 http://my.site.com/some/parameters/here
ab -n 4000 http://my.site.com/some/parameters/here
ab -n 4000 http://my.site.com/some/parameters/here
{quote}
after it I check that error is less than 1%

results of benchmark phase of patched tapestry are:
{quote}
Requests per second: 27.52 /sec (mean)
Time per request: 36.337 [ms] (mean)

Requests per second: 27.77 /sec (mean)
Time per request: 36.013 [ms] (mean)

Requests per second: 27.89 /sec (mean)
Time per request: 35.849 [ms] (mean)
{quote}

In case of usage vanilla version of tapestry results are:
{quote}
Requests per second: 21.56 /sec (mean)
Time per request: 46.376 [ms] (mean)
Requests per second: 21.38 /sec (mean)
Time per request: 46.764 [ms] (mean)
Requests per second: 21.26 /sec (mean)
Time per request: 47.029 [ms] (mean)
{quote}

I published several performance patches yesterday.
In all of them I benchmarked only _one_ patch vs vanilla tapestry.
So overall improvement in performance (when all patched are applied) is almost twice faster
than vanilla tapestry (on a rather complex _real_ page).

> Get rid of String.format usage
> ------------------------------
>
>                 Key: TAP5-2332
>                 URL: https://issues.apache.org/jira/browse/TAP5-2332
>             Project: Tapestry 5
>          Issue Type: Improvement
>            Reporter: Michael Mikhulya
>            Priority: Minor
>              Labels: performance
>         Attachments: 0001-TAP5-2332-get-rid-of-String.format-usage.patch
>
>
> 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)

Mime
View raw message