CodeTools[Profiling] - Maple Programming Help

Home : Support : Online Help : Programming : Profiling : CodeTools Profiling Subpackage : CodeTools/Profiling/Build

CodeTools[Profiling]

 Build
 generate profiling data for specified procedures

 Calling Sequence Build(opts)

Parameters

 opts - (optional) equation(s) of the form option=value where option is one of commands, files, or procs; specify options for the Build command

Description

 • The Build(opts) command accepts a set of procedures and commands and returns the profiling data for the procedures collected over the execution of the given commands and any pre-existing profiling data.
 • The opts parameter can contain any of the following equations that specify options for the Build command.
 commands = expression
 Specifies commands to be executed during profiling.  Generally, these are unevaluated function calls, however other unevaluated expressions can be passed as well.
 files = string
 Specifies the files to be read during profiling.
 procs = name
 Specifies the procedures to be profiled.  If no procedures are specified, then all procedures are profiled.
 • You can specify multiple values for the options commands, files, and procs because each option can be passed more than once.  As well, each option accepts a list of values.
 • If neither commands or files is specified, then the profiling data is taken from procedures that were already profiled at the time of the call to Build.  This can be useful for creating a table of profile data for procedures that have been profiled interactively.
 • The Build function returns a table whose keys are the encoded names (see CodeTools[EncodeName]) of the procedures that were profiled and whose values are rtables of profile data.  All functions that manipulate profile data, for example, PrintProfiles, accept this table as input.
 • Unless you want to extract data directly from the profile rtables, it is unnecessary to manipulate the returned table directly.
 • To join tables generated from separate calls to Build, use the Merge function.

Examples

 > a := proc(x)     if (x > 1) then         return 1;     else         return 0;     end if; end proc:
 > $\mathrm{with}\left(\mathrm{CodeTools}\left[\mathrm{Profiling}\right]\right):$
 > $t≔\mathrm{Build}\left(\mathrm{procs}=a,\mathrm{commands}='a\left(0\right)',\mathrm{commands}='a\left(2\right)'\right)$
 ${t}{≔}{table}{}\left(\left[{\mathrm{_Inert_ASSIGNEDNAME}}{}\left({"a"}{,}{"PROC"}\right){=}\left[\begin{array}{ccc}{2}& {0}& {6}\\ {2}& {0}& {6}\\ {1}& {0}& {0}\\ {1}& {0}& {0}\end{array}\right]\right]\right)$ (1)
 > $\mathrm{PrintProfiles}\left(t\right)$
 a a := proc(x)      |Calls Seconds  Words| PROC |    2   0.000      6|    1 |    2   0.000      6| if 1 < x then    2 |    1   0.000      0|     return 1                             else    3 |    1   0.000      0|     return 0                             end if end proc
 > $t≔\mathrm{Build}\left(\mathrm{procs}=a,\mathrm{commands}='a\left(0\right)',\mathrm{commands}=\left['a\left(2\right)','a\left(-1\right)'\right]\right):$
 > $\mathrm{PrintProfiles}\left(t\right)$
 a a := proc(x)      |Calls Seconds  Words| PROC |    3   0.000      9|    1 |    3   0.000      9| if 1 < x then    2 |    1   0.000      0|     return 1                             else    3 |    2   0.000      0|     return 0                             end if end proc