Early draft proposal for Value Arrays
Albert
albert.noll at oracle.com
Wed Jul 16 10:59:03 UTC 2014
Hi Frank,
did you get a chance to look at Arrays 2.0?
Best,
Albert
On 07/16/2014 12:18 PM, Frank van Heeswijk wrote:
> I have thought of a feature that would be very useful in practice and might actually be in the scope of the Valhalla project.
> The outlined description below is a very early draft about Value Arrays and I am looking for opinions.
>
> Let us start with a practical example, an high performance class that works with matrices stored as doubles.
> As example we can take the 4 by 4 variant, which is used a lot in graphics, in Java 8 there are two issues:
> 1) Mathematical operations are cumbersome; if you create a new copy on every operation, then a lot of objects will be created and it will lead to garbage collection.
> The only alternative would be updating the object as you go (without creating a new instance), but it is tricky to work with such a class.
> 2) You want to ideally store the objects in an float[] m or in a float[][] m for easy access, but this also costs another object per instance.
>
> I think that the first issue is fixed with the upcoming addition of Value Types.
> However the second issue is not so easily fixed, therefore I would like to introduce the idea of Value Arrays:
>
> @ValueArray
> private final double[][] m;
>
> The idea is that all array elements will be stored directly on the heap(?) and that no array object will be created at all.
>
> I am also wondering to what extent this is possible, if at all:
> 1) Value Array with constant size, known at compile time.
> 2) Value Array with an unknown size, dynamically known at runtime.
>
> So the expected behaviour would be that:
>
> @ValueArray
> private final double[][] m = new double[4][4];
>
> would simply be equal to how matrices (4x4) are defined nowadays in practice:
>
> private final double m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44;
>
> I think that the maintainability and readability of the code will be greatly improved with this feature and that the Valhalla project is the correct project to consider this feature.
>
More information about the valhalla-dev
mailing list