EList performance issues [message #620517] |
Fri, 05 December 2008 13:40 |
Sebastien Gemme Messages: 4 Registered: July 2009 |
Junior Member |
|
|
I'm a happy EMF user for the last few years. I'm using EMF for all my
project now.
I am now facing some issues with the EList generated using the genmodel:
He is my problem, I am trying to work with point clouds, i.e. xyz
coordinates data coming from a laser scanner we are using on our Mars rover.
These point clouds can be pretty big, a few 100 000 points or more.
- Even when specifying 'is unique' to false in the ecore, the
'isUnique()' method of the generatee EList still returns true. Everytime
I call add or addAll methods on the EList, the isUnique() returns true
making a search in the whole list every time I insert a new item. As
soon as I hit more than 10 000 points, the time dramatically increases.
- Looks like the EList is backed with an array, so every time I insert a
new item:
- a new array of 'size+1' is allocated
- the data from the previous array is copied into this grown array
using System.arraycopy
- the item I want to insert is inserted at the end of this grown array.
When the list is small this works fine but as soon as you hit a few
1000s elements, the time also increases dramatically.
- I would have expected to see a linked list approach on this one.
I would like to know if there is a way to make the EList super fast for
applications using larger datasets.
I wanted to show those c++ developers that Java can be as fast a c++ but
so far: they are not impressed !!!
Thanks for taking time to look at my questions,
Sebastien Gemme
Canadian Space Agency
|
|
|
Powered by
FUDForum. Page generated in 0.04445 seconds