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