Skip to content
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

Performant graph plotting and benchmarking #135

Open
filchristou opened this issue Jun 29, 2023 · 4 comments
Open

Performant graph plotting and benchmarking #135

filchristou opened this issue Jun 29, 2023 · 4 comments

Comments

@filchristou
Copy link
Collaborator

I think it's time to start looking at the performance of GraphMakie.jl
I guess this mostly means rewriting most of the code to be type stable..
To do such a thing, I suggest that we first setup a benchmarking toolchain, to track improvements.

Such advancements will be very useful for interactions, animations, and big graphs.
In my use case now, I have a graph with 8814 nodes and 48583 edges.
The default plot requires 219.085997 seconds (1.97 M allocations: 122.813 MiB, 0.03% gc time) in my machine.
I am not sure how much better this can get..but it will be exciting to find out!

@hexaeder
Copy link
Collaborator

hexaeder commented Jul 4, 2023

Wow thats a long waiting time... As a first step it might be interesting to sprinkle a few TimerOutputs.jl annotations in the recipe to get an idea of how much time is spent within GraphMakie and how much time is spent in the linesegments and scatter calls.

@SimonDanisch
Copy link
Member

Or benchmark the layouting algorithm directly? I doubt that the plotting will be the bottleneck here ....

@hexaeder
Copy link
Collaborator

hexaeder commented Jul 4, 2023

Also, during plotting the recipe code is always run twice (not exactly sure why though). Would be nice to somehow detect the first run and skip the layout algo there to not run an expensive layout twice. Simon do you have any idea on how to detect that?

@SimonDanisch
Copy link
Member

Uh, we should just fix it in Makie...
The user can already avoid that by calling plot(...; axis=(type=Axis;)) or whatever axis type you want.
Right now we need to plot it one time to figure out the axis type :D But, we do hope to remove this in the next breaking release

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants