Profiling scripts

Sometimes, some functions of your script are taking up time and you would like to optimize those. We are not speaking here about the encoding of streams, which usually takes the vast majority of the spent computing power, but of functions written directly in Liquidsoap. In order to understand those better, Liquidsoap has a profiler which records all the function calls. It can be enabled with

profiler.enable()

(or by passing the --profile commandline flag of Liquidsoap) and the statistics can be obtained with

print(profiler.stats.string())

It will output something like

function              self              total             calls

+                     0.359139919281    0.359139919281    302000
list.add              0.324638843536    442.74707818      202000
if                    0.242718935013    442.951756954     102002
list.cons             0.230906486511    442.277146816     101000

where each lines consists of a function, the time spent in the functions, the time spent in the function and the functions it has called and the number of calls to the function.