On 15/07/2010 05:11, Alexander Shirkov wrote: > Hello, > > I¹m working on Bug 49164 ( > https://issues.apache.org/bugzilla/show_bug.cgi?id=49165) > > Have a question: > Any hidden reasons, why following construction was used for creating %t > pattern?:
It stems from this: http://svn.apache.org/viewvc?view=revision&revision=285381 It appears to be performance related but from the figures you present below, it may now be unnecessary. Mark > > private SimpleDateFormat dayFormatter = new SimpleDateFormat("dd"); > private SimpleDateFormat monthFormatter = new SimpleDateFormat("MM"); > private SimpleDateFormat yearFormatter = new SimpleDateFormat("yyyy"); > private SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:mm:ss"); > ... > StringBuilder current = new StringBuilder(32); > current.append('['); > current.append(struct.dayFormatter.format(date)); > current.append('/'); > current.append(lookup(struct.monthFormatter.format(date))); > current.append('/'); > current.append(struct.yearFormatter.format(date)); > current.append(':'); > current.append(struct.timeFormatter.format(date)); > current.append(' '); > current.append(getTimeZone(date)); > current.append(']'); > struct.currentDateString = current.toString(); > > Instead of this one: > > private SimpleDateFormat timeFormatter = new > SimpleDateFormat("[dd/MMM/yyyy:HH:mm:ss]"); > ... > struct.currentDateString = struct.timeFormatter.format(date); > > I¹ve added one more test with this structure to > org.apache.catalina.valves.Benchmarks and looks like the last solution the > shortest and fastest option. Plus we can pass any pattern from configuration > (#49165 enhancement intention): > > TimeDateElementBenchmarkTest_Sync: 5 threads and 10000000 iterations using > Syncs took 3392ms > TimeDateElementBenchmarkTest_Local: 5 threads and 10000000 iterations using > ThreadLocals took 2551ms > TimeDateElementBenchmarkTest_LocalStruct: 5 threads and 10000000 iterations > using single ThreadLocal took 2237ms > TimeDateElementBenchmarkTest_LocalStruct_SBuilder: 5 threads and 10000000 > iterations using single ThreadLocal, with StringBuilder took 2196ms > TimeDateElementBenchmarkTest_LocalStruct_SimpleDateFormat: 5 threads and > 10000000 iterations using single ThreadLocal SimpleDateFormat took 2152ms > > > P. S. My thanks to Mark Thomas for buglist to start. > > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org