ian, thanks for the ref. will read ASAP.
/jean > -----Original Message----- > From: Ian MacLean [mailto:[EMAIL PROTECTED] > Sent: Wednesday, September 17, 2003 12:57 > To: [EMAIL PROTECTED] > Cc: [EMAIL PROTECTED] > Subject: Re: [NAntC-Dev] SqlTask verbosity patch and > mysterious usage of StringBuilder > > > I recently read a good article on just this topic[1]. The > gist of it in > realtion to the current topic is that multiple +'s ie > foo + bar + x get resolved into Concat(foo, bar, x) > And that the jit treats stringbuilders specially in order to increase > memory efficiency. > > StringBuilder may not be quicker but its use will result in > less memory > consumption. > > [1] > http://www.codeproject.com/dotnet/strings.asp?target=%2Enet%7Cstrings > > >david, > >just to get clear, is this what you'd do instead? i've been > wondering > >about the efficiency of Concat vs. Stringbuilder. do your benchmarks > >take garbage collection into account? > > > > if ( this.Verbose ) { > > string message = String.Concat( > > "SQL Task:", Environment.NewLine), > > "Connection String: ", ConnectionString, > >Environment.NewLine, > > "Use Transaction?: " , UseTransaction.ToString() , > >Environment.NewLine, > > "Batch Sql Statements?: " , this.Batch.ToString() , > >Environment.NewLine, > > "Batch Delimiter: " , this.Delimiter , > Environment.NewLine, > > "Delimiter Style: " , this.DelimiterStyle.ToString() , > >Environment.NewLine, > > "Fail On Error?: " , this.FailOnError.ToString() , > >Environment.NewLine, > > "Source script file: " , this.Source , > Environment.NewLine, > > "Output file: " , this.Output , Environment.NewLine ); > > Log(Level.Info, message ); > > } > > > >/jean > > > > > > > >>-----Original Message----- > >>From: David Reed [mailto:[EMAIL PROTECTED] > >>Sent: Wednesday, September 17, 2003 04:57 > >>To: Ian MacLean > >>Cc: [EMAIL PROTECTED] > >>Subject: RE: [NAntC-Dev] SqlTask verbosity patch and > >>mysterious usage of StringBuilder > >> > >> > >>Ian, > >> > >>Unfortunately, no. But AppendFormat(...) does. > >> > >>We don't use StringBuilder too much internally, because the > >>consensus has been (despite what the fine manual says and all > >>the fine MCTs teach) that it's not any faster than catting > >>(we've run some 100k and 1M iteration tests that seem to > >>indicate that it's actually slower for our typical string cat > >>case) *and* more importantly it is less readable/maintainable > >>than the comparable string cat cases in C#. > >> > >>I'd love to see some code that I can run in-house that > >>demonstrates the conventional wisdom about StringBuilder to > >>be true, if anybody knows of some - that might restore some > >>of my faith in humanity and/or our electoral process. :) > >>Especially since my developer who was the most ardent > >>anti-string builder campaigner has taken his soapbox elsewhere... > >> > >>Since I'm already messing around in SqlTask, I'll change > >>those errant, embedded cats inside Append() calls to use > >>AppendFormat() and I'll resend the patch in a few hours. > >> > >> > >> > >> > >> > >>>-----Original Message----- > >>>From: Ian MacLean [mailto:[EMAIL PROTECTED] > >>>Sent: Tuesday, September 16, 2003 11:04 PM > >>>To: David Reed > >>>Cc: [EMAIL PROTECTED] > >>>Subject: Re: [NAntC-Dev] SqlTask verbosity patch and > >>> > >>> > >>mysterious usage > >>of > >> > >> > >>>StringBuilder > >>> > >>>David, > >>>You're probably right. Does Append support the {1} > >>> > >>> > >>formatting syntax ? > >> > >> > >>>Ian > >>> > >>> > >>> > >>>>Howdy'all, I'm working through the verbosity behavior in > >>>> > >>>> > >>SqlTask to > >> > >> > >>>>make it behave more like what I expected (please see the attached > >>>>patch for your consideration) and I came across this additional > >>>>oddity. Does it strike anybody else as defeating the purpose of > >>>> > >>>> > >>using > >> > >> > >>>>StringBuilder in the first place? I didn't change it in the > >>>> > >>>> > >>attached > >> > >> > >>>>patch, but it (although more readable that proper Append()s should > >>>> > >>>> > >>be) > >> > >> > >>>>has Code Smell(r) to me. :) > >>>> > >>>> > >>>> > >>>>Peoples' Exhibit 001a: > >>>> > >>>> > >>>> > >>>> if ( this.Verbose ) { > >>>> > >>>> StringBuilder message = new StringBuilder(); > >>>> > >>>> message.Append ("SQL Task:" + Environment.NewLine); > >>>> > >>>> message.Append ("Connection String: " + > >>>> > >>>> > >>ConnectionString > >> > >> > >>>>+ Environment.NewLine); > >>>> > >>>> message.Append ("Use Transaction?: " + > >>>>UseTransaction.ToString() + Environment.NewLine); > >>>> > >>>> message.Append ("Batch Sql Statements?: " + > >>>>this.Batch.ToString() + Environment.NewLine); > >>>> > >>>> message.Append ("Batch Delimiter: " + > >>>> > >>>> > >>this.Delimiter + > >> > >> > >>>>Environment.NewLine); > >>>> > >>>> message.Append ("Delimiter Style: " + > >>>>this.DelimiterStyle.ToString() + Environment.NewLine); > >>>> > >>>> message.Append ("Fail On Error?: " + > >>>>this.FailOnError.ToString() + Environment.NewLine); > >>>> > >>>> message.Append ("Source script file: " + > >>>> > >>>> > >>this.Source + > >> > >> > >>>>Environment.NewLine); > >>>> > >>>> message.Append ("Output file: " + this.Output + > >>>>Environment.NewLine); > >>>> > >>>> Log(Level.Info, message.ToString()); > >>>> > >>>> } > >>>> > >>>> > >>>> > >>>> > >>>> > >>> > >>> > >> > >>------------------------------------------------------- > >>This sf.net email is sponsored by:ThinkGeek > >>Welcome to geek heaven. > >>http://thinkgeek.com/sf > >>_______________________________________________ > >>NAntContrib-Developer mailing list > >>[EMAIL PROTECTED] > >>https://lists.sourceforge.net/lists/listinfo/nantcontrib-developer > >> > >> > >> > > > > > > > >------------------------------------------------------- > >This sf.net email is sponsored by:ThinkGeek > >Welcome to geek heaven. > >http://thinkgeek.com/sf > _______________________________________________ > >NAntContrib-Developer mailing list > >[EMAIL PROTECTED] > >https://lists.sourceforge.net/lists/listinfo/nantcontrib-developer > > > > > > > > ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ NAntContrib-Developer mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nantcontrib-developer