A profiler can show that a normalizer ran thousands of times even when each call looked harmless in isolation. Its call counts help you find repeated work. Its timings need more care, because instrumentation changes the program it measures.
You run a real cProfile probe, inspect supplied exclusive-cost evidence and count a call tree. Keep the measurement question narrow. A high total time may belong to a function that mostly waits for its children, while a smaller total can hide expensive work performed directly. The exercises avoid timing assertions so a busy laptop and a quiet server produce the same checked answer. Count empty inputs and repeated calls too.