Giter VIP home page Giter VIP logo

Comments (4)

vlaaad avatar vlaaad commented on May 25, 2024

Hi!
Thanks for the repro, I've been able to reproduce the issue. Seems to be a bug in context implementation, it's cache has lots of deeply-nested [:dirty [:dirty [:dirty ...]]] entries. I'll think about it.
I also noticed you don't have core.cache factory for the context, which will eventually lead to out of memory errors: see example.

This might be a very difficult bug to fix, context stuff turned out to be too damn hard to comprehend. I would suggest not using fx/create-app, perhaps you could use simple atom and renderer with passing data around.

from cljfx.

vlaaad avatar vlaaad commented on May 25, 2024

Actually, I might have a solution, I'll need to test if thoroughly though...

from cljfx.

jpmonettas avatar jpmonettas commented on May 25, 2024

Hi! Thanks for looking at it @vlaaad.
Yeah I tried to see if I could figure out what was wrong before reporting the bug but had a hard time wrapping my head around the code.

I was trying the subscriptions route because of performance issues, to avoid the entire diagram to be recalculated every time something simple like a node coordinate change.

Also I was seeing (checking with jvisualvm) lots of garbage being generated and collected while dragging the node around. Maybe it is not a good approach for things like this.

from cljfx.

vlaaad avatar vlaaad commented on May 25, 2024

I think I might have fixed your issue.

You need to use core.cache with contexts: I added #(cache/lru-cache-factory % :threshold 256) as a second parameter to fx/create-context and it stopped printing "Rendering diagram" (I also added cache use in every example of contexts).

By the way, the fact that it's printed means that we call this function, it does not mean that any JavaFX objects will be re-created. The work cljfx does for checking if the current component description is the same as the previous one is still there, it just happens without calling your function.

from cljfx.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.