I'd really like to speed up guix pull on my netbook and have been thinking about ways to do so for a while.
First of all, I'm curious, how do other Guile developers profile code? Could we add a profiling flag for the CLI similar to the existing debugging flags? On a related note, has anyone tried to write a causal profile for Guile, or a similar Scheme implementation? One thing that definitely needs improvements is memory usage. That should speed things up a lot too, since it would result in less swapping on machines like mine. I would love to hear some tips on doing memory profiling on Guile from someone who has done that. I also looked into porting the ideas from Scalene to Guile, but haven't gotten far since I'm busy with uni and other Guix projects. I also thought about some possible ways of caching expensive computations that are not built using the store. Since Guix is mostly purely functional in practice, I wonder if we could take some notes from languages like Yatima. Or just use a plain old database for some operations that are currently done by Scheme. I know some of this must have already been discussed, but it's pretty hard to track it down, and I think the roadmap for performance improvements really should be centralized somewhere.