It takes three lines of code to improve the performance dramatically. In SourceBuffer.java, change the declaration "String sb = new String()" in the decode() routine to the declaration:
StringBuffer sb = new StringBuffer(out_file_length);
Then use the method call "sb.append( (char)node.symbol)" method of StringBuffer insteand of "sb = sb + ((char)node;".symbol & 0xff))".
Lastly, the return line of decode should be changed from "return sb;" to "return sb.toString();".
Most of the time in this routine is spent allocating, copying and freeing new String() objects. Performance probably degrades exponentially with the size of the BXL file. This method removes that bottleneck by using a single pre-allocated string buffer.
It takes three lines of code to improve the performance dramatically. In SourceBuffer.java, change the declaration "String sb = new String()" in the decode() routine to the declaration:
Then use the method call "sb.append( (char)node.symbol)" method of StringBuffer insteand of "sb = sb + ((char)node;".symbol & 0xff))".
Lastly, the return line of decode should be changed from "return sb;" to "return sb.toString();".
Most of the time in this routine is spent allocating, copying and freeing new String() objects. Performance probably degrades exponentially with the size of the BXL file. This method removes that bottleneck by using a single pre-allocated string buffer.