-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance issue with big datasets #57
Comments
Hi @filippometacell Indeed, as you saw, what PyEcore does in the case you add multiple elements to a collection, it checks at runtime if each element as the right type in order to ensure that the collection content will respect the structural constraints from the metamodel. Also, behind the scene, the collection tries to set opposite collections and containers. I will check if there is a dirty trick I can use to improve performances in this case (I have an idea, but it's not very beautiful...) EDIT> By the way, your |
Hi @aranega, thanks for your fast response. That's really a good point, I was just thinking about the overhead but we're possibly losing data we definitely don't want to lose. |
@filippometacell Sorry for the delay, I had some thing to fix before I could work on the performance issue. I made an experimental modification on pyegeppetto in the |
Hi @aranega, thanks for the patch I'm trying make some tests but I'm getting the following error:
also made a pip install after the checkout. |
@filippometacell My bad... I forgot to add some imports when I copied the code... Sorry about that, it should be ok now in the same branch... |
Hi @aranega, I ran some tests and it's working perfectly. Performances are much better and we are no more losing data in the timeseries. Will this be ported into pyecore? |
@filippometacell Regarding the data losses in the series, it depends on the way the On top of some performances improvement I will try to add, one thing I could do is to add either an annotation that you could place on some meta-attribute to manually disable some checks, or a context manager that could temporarily remove the checks. I will try to add all of this quickly, but I need to do more profiling work on the |
Hey @aranega thanks for looking at this! Unique is shown as false in Eclipse for value, is this a problem of how PyEcore treats the default value for a property? cc @filippometacell |
@tarelli outch, actually, I checked, the |
Hi,
we're facing a performance issue with our application based on PyEcore. After some profiling it seems that there is a big overhead when loading a timeseries into an object.
Here the generated code:
value
will be a big list of floats (we can't pass a numpy array because ofif value
but thats another minor issue).When we're calling the extend function we're in fact triggering a logic which is adding the elements of the list one by one to an OrderedSet and also doing checks on every element.
One possible solution i was figuring out to handle this is to replace that
self.value.extend(value)
with
self.value.items = value
although I don't know if I'm missing something important on the logic behind.
Thanks
The text was updated successfully, but these errors were encountered: