Understanding the profiler

The profiler is a tool built in the runtime system that allows you to know where your program spends time, and which function calls which function.

The profiler can help to identify pieces of your program that are slower than expected.

In order to enable the profiler during the execution of a program, you must start fglrun with the -p option, for example:
fglrun -p myprog

When the program ends, the profiler dumps profiling information to standard error.

The times reported by the profiler can change from one execution to the other, depending on the available system resources. You better execute the program several times to get an average time.

The profiler does not support parent/child recursive calls, when a child function calls its parent function (i.e. Function P calls C which calls P again). In this case the output will show negative values, because the time spend in the parent function is subtracted from the time spend in the child function.