gcj's IO performance vs blackdown JDK
Andrew Haley
aph@redhat.com
Thu Jan 15 12:50:00 GMT 2004
Mohan Embar writes:
> 12/26/2003 11:59:37 AM, Mohan Embar <gnustuff@thisiscool.com> wrote:
>
> >+jint java::io::BufferedReader::lineEnd (jint limit)
> >+{
> >+ jchar *pbuf = elements (buffer) + pos;
> >+ int i = pos;
> >+ for (; i < limit; i++)
> >+ {
> >+ jchar ch = *pbuf++;
> >+ if (ch == '\n' || ch == '\r')
> >+ break;
> >+ }
> >+ return i;
> >+}
>
> By changing the above native code to this:
>
> jint java::io::BufferedReader::lineEnd (jint limit)
> {
> jchar *pbuf = elements (buffer);
> int i = pos;
> for (; i < limit; i++)
> {
> jchar ch = pbuf[i];
> if (ch == '\n' || ch == '\r')
> break;
> }
> return i;
> }
>
> ...I get a savings of almost another 1s:
>
> running gcj version
> 100000
>
> real 0m16.321s
> user 0m14.518s
> sys 0m1.334s
> running jdk version
> 100000
>
> real 0m17.039s
> user 0m15.572s
> sys 0m1.098s
>
> If anyone cares to enlighten me about what compiler optimization phenomena
> explains this, I'd be interested.
Maybe register allocation. Post the assembly output.
Andrew.
More information about the Java
mailing list