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

