Open emmaccode opened 1 year ago
0.0.91
has been the first update assessing memory in Olive
. A huge problem we have here is simply julia -- the language is too high-level in that no garbage collection can be done by myself aside from gc
and simply removing values with delete!
, setting them to nothing
, and deleteat!
.
All of our actual memory things are getting refined to use as little as possible, the shortcoming yields in Julia removing previous Olive
projects from memory, which I have certainly facilitated a little better with this 0.0.91
release. It might be worth looking into how Pluto does this. Either way, 0.0.91
is a really nice build and I am wrapping it up -- we will see!
New version of Toolips
has made GC and multi-threading both automatic, and this is going to be a substantial gain in terms of performance; for memory, processing time, and garbage collection. Everything is generally lighter, more functional, and performs a bit better as a result of the improvements to Session
and Toolips
. This will require a brief update to get working with Olive
-- the main challenge is going to be that multi-threading does not work with closure callbacks.... Updating all of Olive
to facilitate that will be a challenge.
Olive has a pretty low base memory usage, but as mentioned this has not been a key focus for the project yet. The biggest problem currently is that
Olive
stacks memory, only waiting for ToolipsSession timeouts to completely clear events. Why is this a problem? Session timeouts only happen when the session user is inactive. In other words, the function pipeline still holds data within events. There are a few ways we could facilitate this change inOlive
, but there will also be some upcoming improvements toToolipsSession
to also improve upon an automatic clearing interface. I feel this is an apt improvement -- the next version step for that package also has a lot of really neat stuff in it -- and a lot of radical improvements! Anywho, here I will outline what needs to change aboutOlive
. If you would like to read more about the changes to ToolipsSession, I opened an issue on that repository.olive improvements
So something I want to change is that these functions also tend to store an outrageous amount of project data. At least for the event references, we do not want to be passing the actual
Vector{Cell}
itself. This of course stores it in the function pipeline. That isn't good, and sometimes this is done with Projects, as well. So a better approach is to have all event functions only hold references to get from theConnection
, there is no sense passing it if it is in theConnection
. We will need to index it, but this is the price we pay for greatness.That really is about it other than #49 which is on the roster for 0.1.0. I just needed to get this thought here so I can assign it. cool stuff real soon ttyl <3