Author: peterreilly
Date: Wed Sep 20 15:32:24 2006
New Revision: 448377
URL: http://svn.apache.org/viewvc?view=rev&rev=448377
Log:
Performace:
cache last FileUtils.fromUri() result
Modified:
ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java
Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java?view=diff&rev=448377&r1=448376&r2=448377
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/util/FileUtils.java Wed Sep 20
15:32:24 2006
@@ -87,6 +87,16 @@
/**
+ * A one item cache for fromUri.
+ * fromUri is called for each element when parseing ant build
+ * files. It is a costly operation. This just caches the result
+ * of the last call.
+ */
+ private Object cacheFromUriLock = new Object();
+ private String cacheFromUriRequest = null;
+ private String cacheFromUriResponse = null;
+
+ /**
* Factory method.
*
* @return a new instance of FileUtils.
@@ -1137,8 +1147,17 @@
* @since Ant 1.6
*/
public String fromURI(String uri) {
- String path = Locator.fromURI(uri);
- return isAbsolutePath(path) ? normalize(path).getAbsolutePath() : path;
+ synchronized (cacheFromUriLock) {
+ if (uri.equals(cacheFromUriRequest)) {
+ return cacheFromUriResponse;
+ }
+ String path = Locator.fromURI(uri);
+ String ret = isAbsolutePath(path)
+ ? normalize(path).getAbsolutePath() : path;
+ cacheFromUriRequest = uri;
+ cacheFromUriResponse = ret;
+ return ret;
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]