-
Notifications
You must be signed in to change notification settings - Fork 227
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
Dependencies in profile.jl
constitute a significant fraction of the load time
#2238
Comments
An integrated profiler is a pretty fundamental part of a programming environment, IMO, so I'm not inclined to remove that functionality or put it in a separate package. If anything, this seems like an issue with DataFrames.jl and PrettyTables.jl to optimize the load time of those packages? Although I would assume that DataFrames.jl has been optimized already. I'm personally not very familiar with load-time optimizations, so any help is welcome here. |
Thank you for your quick repsonse!
Agreed, but I think that it is easier for CUDA.jl to avoid using those packages than to optimize them. I don't know exactly how DataFrames.jl is used, but it might be possible to write some relatively small amount of code that implements the functionalities needed. Also,
It is a very useful component, but I think it should bring as little additional overhead as possible when not used. Given that that the profiler is moslty used in interactive development and in tests, this affects the import time for downstream packages that do not use the profiler. I opened this issue mostly to highlight that there's an opportunity to reduce loading time, but I don't have the solution. |
If you're not developing in CUDA but only using the package for GPU support in say Flux, or for doing GPU inference with ONNXRunTime, the DataFrames and PrettyTables dependencies are quite annoying not only with respect to load times but also the general increase of your dependency tree. For the technical aspects, all uses of DataFrames and PrettyTables are confined to
I'm not a user of DataFrames so I don't really know what those functions mean, but If it were considered acceptable to require a |
JuliaLang/julia#55516 might be a solution to this. |
While trying to reduce load time for some of our packages, I timed
using CUDA
. I noticed that some dependencies are relatively heavy for what they provide. In particular,DataFrames
andPrettyTables
directly account for more than 20 % of the load time (without considering their dependencies). While this is not necessarily a lot of time (~1s in this example below), it seems to me thatDataFrames
andPrettyTables
are exlcusively used inprofile.jl
and are not required for the operations ofCUDA.jl
. This might be a low-hanging fruit to reduce load times forCUDA.jl
and downstream packages (removing the dependencies, or maybe with package extensions).With
The text was updated successfully, but these errors were encountered: