Author: fhanik Date: Thu May 18 16:48:15 2006 New Revision: 407665 URL: http://svn.apache.org/viewvc?rev=407665&view=rev Log: Small performance improvements
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/ChannelData.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/XByteBuffer.java Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java?rev=407665&r1=407664&r2=407665&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/interceptors/ThroughputInterceptor.java Thu May 18 16:48:15 2006 @@ -79,7 +79,7 @@ } public void messageReceived(ChannelMessage msg) { - long bytes = XByteBuffer.getDataPackageLength(((ChannelData)msg).getDataPackage().length); + long bytes = XByteBuffer.getDataPackageLength(((ChannelData)msg).getDataPackageLength()); mbRx += ((double)bytes)/(1024d*1024d); if ( msgRxCnt.get() % interval == 0 ) report(timeTx); msgRxCnt.addAndGet(1); Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/ChannelData.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/ChannelData.java?rev=407665&r1=407664&r2=407665&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/ChannelData.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/ChannelData.java Thu May 18 16:48:15 2006 @@ -183,12 +183,16 @@ * @return byte[] */ public byte[] getDataPackage() { - byte[] addr = ((MemberImpl)address).getData(false); int length = getDataPackageLength(); byte[] data = new byte[length]; int offset = 0; + return getDataPackage(data,offset); + } + + public byte[] getDataPackage(byte[] data, int offset) { + byte[] addr = ((MemberImpl)address).getData(false); XByteBuffer.toBytes(options,data,offset); - offset = 4; //options + offset += 4; //options XByteBuffer.toBytes(timestamp,data,offset); offset += 8; //timestamp XByteBuffer.toBytes(uniqueId.length,data,offset); Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/XByteBuffer.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/XByteBuffer.java?rev=407665&r1=407664&r2=407665&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/XByteBuffer.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/io/XByteBuffer.java Thu May 18 16:48:15 2006 @@ -332,13 +332,39 @@ * Creates a complete data package * @param indata - the message data to be contained within the package * @param compressed - compression flag for the indata buffer - * @return - a full package (header,compress,size,data,footer) + * @return - a full package (header,size,data,footer) * */ public static byte[] createDataPackage(ChannelData cdata) { - return createDataPackage(cdata.getDataPackage()); +// return createDataPackage(cdata.getDataPackage()); + //avoid one extra byte array creation + int dlength = cdata.getDataPackageLength(); + int length = getDataPackageLength(dlength); + byte[] data = new byte[length]; + int offset = 0; + System.arraycopy(START_DATA, 0, data, offset, START_DATA.length); + offset += START_DATA.length; + toBytes(dlength,data, START_DATA.length); + offset += 4; + cdata.getDataPackage(data,offset); + offset += dlength; + System.arraycopy(END_DATA, 0, data, offset, END_DATA.length); + offset += END_DATA.length; + return data; } + public static byte[] createDataPackage(byte[] data, int doff, int dlength, byte[] buffer, int bufoff) { + if ( (buffer.length-bufoff) > getDataPackageLength(dlength) ) { + throw new ArrayIndexOutOfBoundsException("Unable to create data package, buffer is too small."); + } + System.arraycopy(START_DATA, 0, buffer, bufoff, START_DATA.length); + toBytes(data.length,buffer, bufoff+START_DATA.length); + System.arraycopy(data, doff, buffer, bufoff+START_DATA.length + 4, dlength); + System.arraycopy(END_DATA, 0, buffer, bufoff+START_DATA.length + 4 + data.length, END_DATA.length); + return buffer; + } + + public static int getDataPackageLength(int datalength) { int length = START_DATA.length + //header length @@ -355,22 +381,13 @@ return createDataPackage(data,0,data.length,result,0); } - public static byte[] createDataPackage(byte[] data, int doff, int dlength, byte[] buffer, int bufoff) { - if ( (buffer.length-bufoff) > getDataPackageLength(dlength) ) { - throw new ArrayIndexOutOfBoundsException("Unable to create data package, buffer is too small."); - } - System.arraycopy(START_DATA, 0, buffer, bufoff, START_DATA.length); - toBytes(data.length,buffer, bufoff+START_DATA.length); - System.arraycopy(data, doff, buffer, bufoff+START_DATA.length + 4, dlength); - System.arraycopy(END_DATA, 0, buffer, bufoff+START_DATA.length + 4 + data.length, END_DATA.length); - return buffer; - } + - public static void fillDataPackage(byte[] data, int doff, int dlength, XByteBuffer buf) { - int pkglen = getDataPackageLength(dlength); - if ( buf.getCapacity() < pkglen ) buf.expand(pkglen); - createDataPackage(data,doff,dlength,buf.getBytesDirect(),buf.getLength()); - } +// public static void fillDataPackage(byte[] data, int doff, int dlength, XByteBuffer buf) { +// int pkglen = getDataPackageLength(dlength); +// if ( buf.getCapacity() < pkglen ) buf.expand(pkglen); +// createDataPackage(data,doff,dlength,buf.getBytesDirect(),buf.getLength()); +// } /** * Convert four bytes to an int --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]