Profiling
Jump to navigation
Jump to search
To "profile" a language pair to see which part of the pipeline is the slowest, run each step one at a time. Here's a helper that will do that for you:
apertium_time_mode () {
local mode=$1 print=$2
local -a cmds res
IFS=$'\0' res=( $(cat) ) # slurp into first element of array
IFS=$'\n' cmds=( $(tr '|' '\n' < modes/"${mode}".mode | grep '[^ ]' | sed 's/[$]1/-d/g; s/[$]2//g' ) )
for i in $(seq 0 "${#cmds[@]}"); do
cmd="${cmds[$i]}"
echo "$cmd"
m=$(( i + 1 ))
time res[$m]=$(echo "${res[$i]}" | eval "$cmd")
if [[ -n $print ]]; then
echo "${res[$m]}"
fi
done
}
Usage:
$ echo 'Boađus ii leat nu buorre go mun háliidan.'| apertium_time_mode sme-nob
to also see the output:
$ echo 'Boađus ii leat nu buorre go mun háliidan.'| apertium_time_mode sme-nob print