> In the 'Size' approach, wouldn't there  have to be a NullPointerCheck
> in place of the ArrayBoundsCheck?

Depends on the JVM.  If using a null pointer results in an exception
that can be differentiated reasonably well then most explicit null
pointer checks are unnecessary.  Besides which, an explicit null
pointer check is considerably cheaper than a bounds check, since
nothing needs to be fetched and no registers are clobbered.

On Oct 7, 1:06 pm, MB <[email protected]> wrote:
> In the 'Size' approach, wouldn't there  have to be a NullPointerCheck
> in place of the ArrayBoundsCheck?
>
> I usually use the 'Size' approach when the return values are Object
> types and 'array[]' approach for primitive data types.
> I never really thought of these from a performance perspective. Please
> do share your findings if you do any experiments etc.
>
> On Oct 7, 9:35 am, DanH <[email protected]> wrote:
>
> > With a fully optimized JIT they'd be identical.  With a "dumb" JIT or
> > interpretive code I'd guess that the Size approach would have a slight
> > edge (no need to check array bounds, et al), but it's hard to say with
> > any certainty.  (A lot depends on how well optimized instance field
> > access is, and there's potential for a 100:1 variation there.)
>
> > In any event, the amount of time difference you're talking about is
> > negligible compared to many other operations that go on inside a
> > typical Android application.  A single tweak of a single character on
> > the display would be thousands of times greater.
>
> > On Oct 7, 10:34 am, webmonkey <[email protected]> wrote:
>
> > > Taking into account JIT and non-JIT devices, what would be most
> > > efficient on Android for returning multiple values from functions:
>
> > > an array like this:
>
> > > float[] bestSize(float [] result) {
>
> > >   // calculations...
>
> > >   result[0] = width;
> > >   result[1] = height;
> > >   return result;
>
> > > }
>
> > > or a final class like this:
>
> > > Size bestSize(Size result) {
>
> > >   // calculations...
>
> > >   result.width = width;
> > >   result.height = height;
> > >   return result;
>
> > > }
>
> > > Where Size is defined as:
>
> > > public final class Size {
> > >   public float width;
> > >   public float height;
>
> > > }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to