Author: rajith
Date: Wed Jan 2 08:57:14 2008
New Revision: 608147
URL: http://svn.apache.org/viewvc?rev=608147&view=rev
Log:
I noticed that the asString() method will rebuild the string from scratch each
time. So I cached the String and the char[] after it builds the first time.
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java?rev=608147&r1=608146&r2=608147&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
Wed Jan 2 08:57:14 2008
@@ -57,6 +57,8 @@
private int _hashCode;
private final int _length;
private static final char[] EMPTY_CHAR_ARRAY = new char[0];
+ private char[] chars;
+ private String str;
public AMQShortString(byte[] data)
{
@@ -264,12 +266,15 @@
public char[] asChars()
{
- final int size = length();
- final char[] chars = new char[size];
-
- for (int i = 0; i < size; i++)
+ if (chars == null)
{
- chars[i] = (char) _data.get(i);
+ final int size = length();
+ chars = new char[size];
+
+ for (int i = 0; i < size; i++)
+ {
+ chars[i] = (char) _data.get(i);
+ }
}
return chars;
@@ -277,7 +282,12 @@
public String asString()
{
- return new String(asChars());
+ if (str == null)
+ {
+ str = new String(asChars());
+ }
+
+ return str;
}
public boolean equals(Object o)