Ravi Shankar Nair wrote On 02/06/06 10:19,:
Dear all,
During the debugging process of a data handling project, we have seen by a
profiler that the culprit for long time consuming process is the
java.lang.String's indexOf method.
Finally we though of using a C program instead of indexOf method. Can
anybody provide us a link on such a String class in C or C++, so that we can
make a faster indexOf ? Thanks a million for your time.
It's not clear which of the four different indexOf()
methods you're using. Still, no matter which it is, it
is probably doing its job nearly as fast as that job can
be done. You might get a marginally faster something-or-
other in C or C++, but it's unlikely that you'll get a
dramatic speedup. Meanwhile, you'd be giving up Java's
support of international character sets (less than perfect,
but miles ahead of C and C++), Java's protection against
out-of-range arguments (especially in C), and so on.
You're likely to do better not by looking for a faster
indexOf(), but by considering whether indexOf() is being
used wisely. Is the program over-using indexOf() when it
really ought to be using something else? Is it searching
for a one-character String instead of for a single char?
Is it always searching from the beginning of the even when
it's known that the target doesn't appear among the first
thousand characters? Is it searching Strings that are a
hundred megabytes in length? Is indexOf() even the right
tool -- ought you to be using regular expressions, say?
It's been said that the fastest I/O operation is the
one you don't perform. "I/O operation" is just a special
case of a more general observation, of course. I suggest
you re-examine your reasons for using indexOf() so heavily,
and consider whether you ought to be using it differently
or using something else altogether.