In article <20c411d9-8955-4f4c-9a78->,
lewbloch <> wrote:
> On Jul 3, 8:26 pm, blm...@myrealbox.com <blmblm.myreal...@gmail.com>
> wrote:
> > In article <jcu707d1fb592i91m40fsjtfg0784kn...@4ax.com>,
> > Gene Wirchenko <ge...@ocis.net> wrote:
[ snip ]
> > Another "no separate method" approach would be to use the String
> > class's indexOf method:
> >
> > static boolean StringLibSearch
> > (
> > char CurrChar
> > )
> > {
> > return IdentChars.indexOf(CurrChar) >= 0;
> > }
> >
> > I added this to your benchmark suite and found it to give performance
> > comparable to the TreeSet implementation (indeed, usually it was a
> > bit faster). The overhead of building the TreeSet probably doesn't
> > matter in the grand scheme of things, and probably it also doesn't
> > matter a lot that every call to the TreeSet's "contains" method
> > (AFAIK) has to convert a character primitive to a Character object,
> > but -- <shrug>.
> >
> > But if you're going to use a Set, why a TreeSet? As best I can tell,
> > you don't use/need the sorted-ness it provides. Just out of curiosity,
> > I also added to your benchmark suite something that declares the set
> > as a Set and creates it as an instance of HashSet, and the resulting
> > code was noticeably faster than any of the other alternatives.
> >
> > And finally, I wondered how all of these methods compared to
> > something using regular expressions (the java.util.regex classes), so
> > i tried that too, replacing your whole parse code with the following:
> >
> > import java.util.regex.*;
> >
> > // ....
> >
> > static Pattern IdentRegexPattern=Pattern.compile("[" + IdentChars + "]+");
> >
> > // ....
> >
> > // code to be called repeatedly from timing loop
> > static void ParseRegex()
> > {
> > Matcher IdentMatcher = IdentRegexPattern.matcher(cParseString);
> > String sIdent;
> > while (IdentMatcher.find())
> > {
> > sIdent = IdentMatcher.group();
> > if (nRepetitions==1)
> > System.out.println(sIdent);
> > }
> > }
> >
> > // ....
> >
> > This was a clear winner (with regard to performance) on the system
> > where I measured performance, *unless* I ran the tests with the
> > "-server" flag, in which case it took second place, behind the
> > HashSet-based approach. As I understand things, though, the
> > "-server" flag results in the compiler doing more to try to optimize
> > the code, including being more aggressive about eliminating dead
> > code, so I'm not entirely confident about the results I'm getting
> > being meaningful.
> >
> > (Probably your actual code needs to do something other than
> > finding and printing identifiers, so the above code would need
> > some adjustment. Still, if you like regular expressions, it's
> > another possibility, maybe .... )
> >
> > [ snip ]
> >
>
> Your points are excellent, but the ongoing violations of the naming
> conventions is making my brain hurt. Can't we please revert to
> conformant names in our replies at least?
Well .... I guess I figure it's a choice between two things that
seem desirable -- (1) working in with the conventions of the code
I'm modifying and (2) applying the conventions used by most Java
programmers. I chose the former, though it rather makes my brain
hurt as well.

?
--
B. L. Massingill
ObDisclaimer: I don't speak for my employers; they return the favor.