ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kev Jackson <>
Subject Re: AW: Adding a methof to StringUtils
Date Wed, 19 Apr 2006 10:15:31 GMT wrote:

>>As I've been hacking away today, I've been swapping a load of 
>>"" + "" + "" style code over to use StringBuffers.  I thought 
>>that perhaps there's a potential use of a static method in 
>>StringUtils to construct these strings from an array
>For a significant performance boost we had to refactor the whole (or a
>major part) of the codebase in this manner. So I think a performance
>test would be good. How much is the improvement on <delete>?
It's less to do with speed performance and more to do with memory 
performance.  "a" + "b" + "c" creates "a" + "bc" <- intermediate String, 
and then "abc"

I'd love to do a performance/memory test of some kind, perhaps I'll use 
the new NetBeans (it's supposed to have a good view of the heap being 
used).  Any suggestions on tools to help evaluate changes would be helpful.

We also have a problem with logging in general where the Strings are 
concatenated :
log("a" + toFile + " b " + dir + etc, verbosity);

This will produce a lot of temp Strings, send the result to log and 
crucially, if the verbosity is too low, won't even use it - that's a 
waste of memory in every sense of the word.  I'd like to fix this, the 
appendMessage method I proposed is only a bandaid for now.

Essentially we don't want to perform any operations, or produce any 
temporary values if they aren't going to be used, but I can't see a way 
of doing this without something like

if (verbosity >= Project.MSG_INFO) {
  log(msg + e + msg2);

but this is subverting the log method that uses the verbosity 
internally, and adding conditions to the construction of log messages is 
not nice.

>This does not create a log message - it just concatenates the given
>Would be something like toString(Object[]) better?
yes the name I chose was horrible (I'm severely lacking creativity today 
obviously :)

>You specify the args-param as "message fragments", so I would name the
>paramter 'fragments' ;-)
>    public static String toString(final Object[] fragments)
that would make more sense yes

>mmmh .... alternativly you could overload the Task.log() method...
>   Task.log(Object[] messageFragments, int loglevel)
Thanks for the comments

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message