Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #8120
| Path | csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail |
|---|---|
| From | Lew <lewbloch@gmail.com> |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: StringBuilder |
| Date | Sun, 18 Sep 2011 01:42:03 -0700 (PDT) |
| Organization | http://groups.google.com |
| Lines | 81 |
| Message-ID | <15369681.1051.1316335323980.JavaMail.geo-discussion-forums@prfh23> (permalink) |
| References | <96f358c8-a024-40db-b60b-300186c2f813@o10g2000vby.googlegroups.com> <j41fik$3qb$1@news.albasani.net> <4e655caa$0$308$14726298@news.sunsite.dk> <MPG.28d6e5a3ee3006899896b2@202.177.16.121> <4e6d1eb6$0$306$14726298@news.sunsite.dk> <MPG.28de0e1952218cb9896be@202.177.16.121> |
| Reply-To | comp.lang.java.programmer@googlegroups.com |
| NNTP-Posting-Host | 216.239.45.130 |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=ISO-8859-1 |
| X-Trace | posting.google.com 1316335324 5431 127.0.0.1 (18 Sep 2011 08:42:04 GMT) |
| X-Complaints-To | groups-abuse@google.com |
| NNTP-Posting-Date | Sun, 18 Sep 2011 08:42:04 +0000 (UTC) |
| In-Reply-To | <MPG.28de0e1952218cb9896be@202.177.16.121> |
| Complaints-To | groups-abuse@google.com |
| Injection-Info | glegroupsg2000goo.googlegroups.com; posting-host=216.239.45.130; posting-account=CP-lKQoAAAAGtB5diOuGlDQk0jIwmH0T |
| User-Agent | G2/1.0 |
| X-Google-Web-Client | true |
| Xref | x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:8120 |
Show key headers only | View raw
Wanja Gayk wrote:
> ar...@vajhoej.dk says...
>
>>>> It should be in any Java book above beginners level.
>>>
>>> Like other ancient performance-practices that have been obsoleted by
>>> today's compilers?
>>
>> No.
>>
>> What we are talking about is the "+=" part and that part is
>> still relevant for todays compilers.
>
> And "still" is the keyword. The question remains: For how long will this
> hold true?
You said "today's compilers".
>> Actually JB's example use = but to be equivalent to the first code
>> the it need to be +=.
>>
>> And besides what he mention as reasons there are also
>> the 100 new strings.
>
> So what's the problem with these? before answering, just have a look at
> this:
> http://www.ibm.com/developerworks/java/library/j-jtp09275/index.html
That tells part of the story, but extra objects still cause both memory and time overhead. Time comes from GC cycles that kick in because you were profligate.
...[snip] ...
>
> Nope, I'm arguing that:
>
> String x="";
> for(String s : strings){
> x+=s;
> }
>
> or
>
> String x="";
> for(String s : strings){
> x=x+s;
> }
>
> Is simple pattern that could be detected by tomorrows JIT-compilers and
But you changed your argument. You _were_ speaking of "today's compilers". Now suddenly you're speaking of "tomorrows [sic] JIT-compilers".
Besides shifting your ground, you have weakened your argument. It's one thing to program to allow "tomorrow's compilers" to further optimize your code, it's quite another to program to *require* "tomorrow's compilers" to further optimize your code.
You don't know for a fact that "tomorrow's compilers" will ever optimize across multiple lines of 'String' concatenation.
As you say, they "could be" able to do that; you just cannot aver that they will be able to do that.
But of course, that's only now that you've moved the discussion from "today's compilers" as you first said, to "tomorrow's compilers" as you now wish to discuss.
> transformed into:
>
> StringBuilder b = new StringBuilder();
> for(String s : strings){
> b.append(s);
> }
> String x = b.toString();
>
> But I don't think any compiler programmer would care to detect this
> pattern:
>
> StringBuffer b = new StringBuffer ();
> for(String s : strings){
> b.append(s);
> }
> String x = b.toString();
>
> Just to transform it into the the StringBuilder-variant.
That would likely be incorrect anyway, since the semantics differ. Of course, "tomorrow's JIT compiler" could figure out that there's no thread leak, so it "could be" able to do it. Maybe.
--
Lew
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Re: StringBuilder Wanja Gayk <brixomatic@yahoo.com> - 2011-09-11 16:35 +0200
Re: StringBuilder Arne Vajhøj <arne@vajhoej.dk> - 2011-09-11 16:48 -0400
Re: StringBuilder Wanja Gayk <brixomatic@yahoo.com> - 2011-09-17 02:54 +0200
Re: StringBuilder Roedy Green <see_website@mindprod.com.invalid> - 2011-09-17 00:27 -0700
Re: StringBuilder Lew <lewbloch@gmail.com> - 2011-09-18 01:42 -0700
Re: StringBuilder Wanja Gayk <brixomatic@yahoo.com> - 2011-09-19 00:59 +0200
Re: StringBuilder Roedy Green <see_website@mindprod.com.invalid> - 2011-09-19 05:07 -0700
Re: StringBuilder Jeff Higgins <jeff@invalid.invalid> - 2011-09-19 11:38 -0400
csiph-web