  In Monoidal Computer I, we introduced a categorical model of computation
where the formal reasoning about computability was supported by the simple and
popular diagrammatic language of string diagrams. In the present paper, we
refine and extend that model of computation to support a formal complexity
theory as well. This formalization brings to the foreground the concept of
normal complexity measures, which allow decompositions akin to Kleene's normal
form. Such measures turn out to be just those where evaluating the complexity
of a program does not require substantially more resources than evaluating the
program itself. The usual time and space complexity are thus normal measures,
whereas the average and the randomized complexity measures are not. While the
measures that are not normal provide important design time information about
algorithms, and for theoretical analyses, normal measures can also be used at
run time, as practical tools of computation, e.g. to set the bounds for
hypothesis testing, inductive inference and algorithmic learning.
