Timing compilation

Faré fahree at gmail.com
Wed Dec 5 20:18:53 UTC 2018

On Wed, Dec 5, 2018 at 11:51 AM Didier Verna <didier at lrde.epita.fr> wrote:
> "Robert Goldman" <rpgoldman at sift.info> écrivait:
> > This is yet another problem that comes from the fact that the build
> > plans are linear, instead of hierarchical -- for example there's no
> > subsequence that is identifiable as being the set of operations for a
> > particular module.
> >
> > Logically speaking, there's a tree structure in the build process that
> > is what you need, but I don't believe that there are any facilities in
> > ASDF to recover that tree structure.
> >
> > This may be the best you can do.
>   I think I'll go with Faré's suggestion, scripting it for every library
>   and changing the cache directory every time.
Of course, even my suggestion won't work so well when a system has its
own secondary systems as its dependencies, when there are
package-inferred-system's, etc.

For more precise timing, you could try to time things in a defmethod
perform :around; however, you would still get "interesting" results
for the define-op of systems that have defsystem-depends-on
dependencies and other multi-stage dependencies. Also, you'd fail to
account for the time outside of perform operations—which should
usually be negligible, except for the quite expensive initialization
of the source-registry.

In the end, timing the load* and compile-file* methods or the
underlying load and compile-file functions, as suggested by Robert,
might be your best bet.

Good luck,

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Democracy is but government of the busy, by the bully, for the bossy.
        — Arthur Seldon, "The Dilemma of Democracy"

More information about the asdf-devel mailing list