Thank you.
YES, creating a DateFormat instance is expensive. MAYBE this is a
performance issue.
If it is, then you would have to come up with a way to cache a
DateFormat instance per thread (since it isn't thread-safe). Apache
Commons has a version that is supposed to be faster
(http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/time/FastDateFormat.html)
that might be worth considering.
-Adrian
On 9/4/2011 8:07 PM, [email protected] wrote:
Author: jleroux
Date: Sun Sep 4 19:07:16 2011
New Revision: 1165084
URL: http://svn.apache.org/viewvc?rev=1165084&view=rev
Log:
Revert r1165076 (at Adrian's right demand)
Actually I hastily did it bad using static instead of caching. Anyway, I
checked there are no real needs to change current code in OFBiz for perf.: one
instance is in an exception and the other not called OOTB...
Was: Closes https://issues.apache.org/jira/browse/OFBIZ-4201
"DateFormat.getDateTimeInstance() is very expensive, we can cache it to improve
performance"
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/taglib/FormatTag.java
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java?rev=1165084&r1=1165083&r2=1165084&view=diff
==============================================================================
---
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
(original)
+++
ofbiz/trunk/framework/base/src/org/ofbiz/base/conversion/DateTimeConverters.java
Sun Sep 4 19:07:16 2011
@@ -554,8 +554,9 @@ public class DateTimeConverters implemen
return new java.sql.Timestamp(df.parse(str).getTime());
} catch (ParseException e) {
// before throwing an exception, try a generic format first
+ df = DateFormat.getDateTimeInstance();
if (timeZone != null) {
-
UtilDateTime.DEFAULT_DATE_TIME_FORMAT.setTimeZone(timeZone);
+ df.setTimeZone(timeZone);
}
try {
return new java.sql.Timestamp(df.parse(str).getTime());
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java?rev=1165084&r1=1165083&r2=1165084&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java
(original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilDateTime.java Sun
Sep 4 19:07:16 2011
@@ -69,11 +69,7 @@ public class UtilDateTime {
/**
* JDBC escape format for java.sql.Time conversions.
*/
-
- public static final String TIME_FORMAT = "HH:mm:ss";
- public static final DateFormat DEFAULT_DATE_TIME_FORMAT =
DateFormat.getDateTimeInstance();
- public static final DateFormat DEFAULT_DATE_FORMAT =
DateFormat.getDateInstance();
-
+ public static final String TIME_FORMAT = "HH:mm:ss";
public static double getInterval(Date from, Date thru) {
return thru != null ? thru.getTime() - from.getTime() : 0;
@@ -703,7 +699,8 @@ public class UtilDateTime {
}
public static String toGmtTimestampString(Timestamp timestamp) {
- DEFAULT_DATE_TIME_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT"));
+ DateFormat df = DateFormat.getDateTimeInstance();
+ df.setTimeZone(TimeZone.getTimeZone("GMT"));
return df.format(timestamp);
}
Modified:
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/taglib/FormatTag.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/taglib/FormatTag.java?rev=1165084&r1=1165083&r2=1165084&view=diff
==============================================================================
--- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/taglib/FormatTag.java
(original)
+++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/taglib/FormatTag.java Sun
Sep 4 19:07:16 2011
@@ -71,7 +71,7 @@ public class FormatTag extends BodyTagSu
if (type.charAt(0) == 'N' || type.charAt(0) == 'n')
nf = NumberFormat.getNumberInstance();
if (type.charAt(0) == 'D' || type.charAt(0) == 'd')
- df = org.ofbiz.base.util.UtilDateTime.DEFAULT_DATE_FORMAT;
+ df = DateFormat.getDateInstance();
try {
if (nf != null) {