Grasshopper typically only builds those portions that have expired since the last solution. I suppose I could measure the total time after expiring all caches, but that would not represent a typical run.
The latest version has a profiler widget which may go a long way towards what you're looking for.
Functional programming huh? Makes a lot of sense ofc. The Profiler is certainly along the right path. Can I access it through C# API? I'd like to be able to map update cycle times for different changes to a solution.
ps. It keeps me warm when out treking in the woods