profile General information about instrumentation capabilities

## Syntax

              profileEnable(function)
              profileDisable(function)
              prof = profileGetInfo()

## Arguments

function

  A Scilab function.

prof

  The execution information of `function`.

## Description

These commands are used to profile a specific function within Scilab and get some execution information as Scilab values for further manipulation. Any Scilab function could be instrumented and function informations (static and after execution) are generated for each instrumented function independently. For more information on the `prof` value, see profileGetInfo.

The commands are used to setup and retrieve execution information. As the instrumentation information are accessible within Scilab you could define specific computation to report these numbers.

## Basic example

    // Function to be profiled
    function x=foo(n)
      if n > 0 then
        x = 0;
        for k = 1:n
          s = svd(rand(n, n));
          x = x + s(1);
        end
      else
        x = [];
      end
    endfunction

    // Enables the profiling of the function
    profileEnable(foo)

    // Executes the function
    foo(200);

    // Returns the function profiling results
    prof = profileGetInfo()

## Basic example with a Scilab function

    profileEnable(isempty)                 // instrument isempty()

    isempty(1)                             // execute the function

    prof = profileGetInfo()                // retrieve execution information

    profileDisable(isempty)                // de-instrument isempty()

## Display the 5th most executed lines

    // instrument and execute as before
    profileEnable(isempty);
    for i=1:1e5; isempty(i); end
    prof = profileGetInfo();
    profileDisable(isempty);

    // retrieve the function text
    txt = mgetl(part(prof.FunctionTable.FileName, 1:($-3)) + "sci");
    txt = txt(prof.FunctionTable.FirstLine:$);

    // sort per execution time and display the corresponding lines
    [B, k] = gsort(prof.LineCoverage(1)(:,2));
    [string(k(1:5)) string(prof.LineCoverage(1)(k(1:5),2)), txt(k(1:5))]

## See also

- profileEnable
- profileDisable
- profileGetInfo