I am asking because I am converting a C library that uses a lot
functions that return a simple struct with primitive data type
( Points, Sizes, Matrices, etc ) There are a lot of these functions
and some are used in performance critical situations. I would like to
know what the most efficient way is for Android

The functions would be called like this:

float [] size = bestSize( new float[2] )

or

Size size = bestSize( new Size() );


( If you are in a loop or something you only have to allocate the
object ( or array ) once and you can reuse it. )

I have to make a decision on what I will be using, arrays or final
classes.






On Oct 7, 8: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