Maybe consider https://bugs.openjdk.java.net/browse/JDK-6914113
Especially note the last comment there.

-Ulf

Am 11.09.2014 um 16:44 schrieb Claes Redestad:
Hi,

requesting reviews for this patch which optimizes 
java.sql.Date/Time/Timestamp::toString
by avoiding some unnecessary object allocations. java.sql.Date had similar 
optimizations
applied which this patch improves upon.

bug: https://bugs.openjdk.java.net/browse/JDK-8058230
webrev: http://cr.openjdk.java.net/~redestad/8058230/webrev.00/

Testing: jtreg jdk/test/java/sql with and without 8057826 tests

Before/after performance running a minimal JMH micro[1]:

Benchmark                         Mode  Samples      Score Score error   Units
t.DateBench.dateToString         thrpt       20 30225.628 623.887  ops/ms
t.DateBench.dateToString         thrpt       20 38350.173 1349.432  ops/ms  # 
1.3x

t.DateBench.timeToString         thrpt       20 11793.338 232.121  ops/ms
t.DateBench.timeToString         thrpt       20 47048.344 1969.939  ops/ms  # 
4.0x

t.DateBench.timestampToString    thrpt       20 2529.601 45.990  ops/ms
t.DateBench.timestampToString    thrpt       20 14143.612 407.351  ops/ms  # 
5.6x

/Claes

[1]

package test;

import org.openjdk.jmh.annotations.*;

@State(Scope.Thread)
public class DateBench {

    public java.sql.Time time = java.sql.Time.valueOf("15:15:25");

    @Benchmark
    public String timeToString() {
        return time.toString();
    }

    public java.sql.Date date = java.sql.Date.valueOf("2013-01-01");

    @Benchmark
    public String dateToString() {
        return date.toString();
    }

    public Timestamp timestamp = Timestamp.valueOf("1999-12-13 
15:15:25.645634");

    @Benchmark
    public String timestampToString() {
        return timestamp.toString();
    }

}


Reply via email to