"multianewarray" vs. "anewarray" (was: Re: Performance tweaks)

From: Vadim Nasardinov <vadimn(at)redhat(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: "multianewarray" vs. "anewarray" (was: Re: Performance tweaks)
Date: 2005-02-22 21:57:04
Message-ID: 200502221657.04252@vadim.nasardinov
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On Tuesday 22 February 2005 16:30, Oliver Jowett wrote:
> > I changed the line
> >
> > byte[][] answer = new byte[l_nf][0];
> > to
> > byte[][] answer = new byte[l_nf][];
> >
> > This gave ~1% increase on the benchmark I was running.
>
> Gah?! What JVM? Aren't the two forms equivalent?

javap says it's "multianewarray" vs. "anewarray":

| $ cat Test1.java
| public class Test1 {
| byte[][] answer = new byte[42][0];
| }
|
| $ cat Test2.java
| public class Test2 {
| byte[][] answer = new byte[42][];
| }
|
| $ javap -c -classpath . Test1
| Compiled from "Test1.java"
| public class Test1 extends java.lang.Object{
| byte[][] answer;
|
| public Test1();
| Code:
| 0: aload_0
| 1: invokespecial #1; //Method java/lang/Object."<init>":()V
| 4: aload_0
| 5: bipush 42
| 7: iconst_0
| 8: multianewarray #2, 2; //class "[[B"
| 12: putfield #3; //Field answer:[[B
| 15: return
|
| }
|
| $ javap -c -classpath . Test2
| Compiled from "Test2.java"
| public class Test2 extends java.lang.Object{
| byte[][] answer;
|
| public Test2();
| Code:
| 0: aload_0
| 1: invokespecial #1; //Method java/lang/Object."<init>":()V
| 4: aload_0
| 5: bipush 42
| 7: anewarray #2; //class "[B"
| 10: putfield #3; //Field answer:[[B
| 13: return
|
| }

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Oliver Jowett 2005-02-22 22:00:15 Re: Performance tweaks
Previous Message Oliver Jowett 2005-02-22 21:50:08 Re: Performance tweaks