File tic_toc.h

Utility for timing execution of various scopes in a program. Timings are aggregated across all runs of each scope in an execution, and optionally printed in a table on program exit. Example usage:

void Foo() {
    SYM_TIME_SCOPE("Foo");
    do_stuff();

    {
        SYM_TIME_SCOPE("Foo::more_stuff");
        do_more_stuff();
    }
}

SymForce has a default implementation of this timing and aggregation mechanism; if you have some other timing system that you’d like SymForce to hook into, you can define a header to include with SYMFORCE_TIC_TOC_HEADER and provide your own definition of the SYM_TIME_SCOPE macro

Defines

_SYMFORCE_OPT_INTERNAL_COMBINE1(X, Y)
_SYMFORCE_OPT_INTERNAL_COMBINE(X, Y)
SYM_TIME_SCOPE(fmt_str, ...)