Hi Claes, I think this is OK, however, would like to see if others feel if formatDecimalInt should be located elsewhere so that we just make this change once.
Best, Lance On Sep 11, 2014, at 10:44 AM, Claes Redestad <claes.redes...@oracle.com> wrote: > 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(); > } > > } Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 lance.ander...@oracle.com