1. Gather assembly level profiling information
2. Redefine & recompile a function
3. Gather new assembly level profiling
I can iterate dozens of times between #2 and #3 in the time of a single incremental production build in rust (debug builds are not useful for gathering profiling data).
Generally speaking it takes less than a second to recompile and load a source file, and it can be done while the program is running.