Thread: Performance of loop
Hi,
First of all, I would like to thank the postgresql team for providing this wonderful product.
Coming to the point, in postgresql jdbc driver coding, I saw many inefficient "for" loops. For eg in V2Query.class file
While parsing the parameterized query, there is a "for" loop as this
for (int i = 0; i < query.length(); ++i)
{
char c = query.charAt(i);
....
.....
}
In the above coding, say if the length of the query is 1000 characters then the query.length() is evaluated 1000 times there by reducing the performance.
I think the loop can be rewritten as
for (int i = 0,c=query.length(); i < c; ++i)
{
char c = query.charAt(i);
....
.....
}
with regards,
S.Gnanavel
Software Engineer
Satyam Computer Services Ltd
First of all, I would like to thank the postgresql team for providing this wonderful product.
Coming to the point, in postgresql jdbc driver coding, I saw many inefficient "for" loops. For eg in V2Query.class file
While parsing the parameterized query, there is a "for" loop as this
for (int i = 0; i < query.length(); ++i)
{
char c = query.charAt(i);
....
.....
}
In the above coding, say if the length of the query is 1000 characters then the query.length() is evaluated 1000 times there by reducing the performance.
I think the loop can be rewritten as
for (int i = 0,c=query.length(); i < c; ++i)
{
char c = query.charAt(i);
....
.....
}
with regards,
S.Gnanavel
Software Engineer
Satyam Computer Services Ltd
Gnanavel S wrote: > In the above coding, say if the length of the query is 1000 characters > then the query.length() is evaluated 1000 times there by reducing the > performance. > I think the loop can be rewritten as > > for (int i = 0,c=query.length(); i < c; ++i) > { > char c = query.charAt(i); > > .... > ..... > } Have you benchmarked this? I doubt it's really a hotspot given that the JIT is likely to inline length(). Premature optimization and all that.. -O
No. I havn't done any benchmark, but lot of such inefficient loops may hit the performance.
--
with regards,
S.Gnanavel
Satyam Computer Services Ltd.
On 4/28/05, Oliver Jowett < oliver@opencloud.com> wrote:
Gnanavel S wrote:
> In the above coding, say if the length of the query is 1000 characters
> then the query.length() is evaluated 1000 times there by reducing the
> performance.
> I think the loop can be rewritten as
>
> for (int i = 0,c=query.length(); i < c; ++i)
> {
> char c = query.charAt(i);
>
> ....
> .....
> }
Have you benchmarked this? I doubt it's really a hotspot given that the
JIT is likely to inline length(). Premature optimization and all that..
-O
--
with regards,
S.Gnanavel
Satyam Computer Services Ltd.