Was it worth it?
The same loop in pure Python, then timeit both:
$ python -m timeit -s "from collatz import collatz_steps" "collatz_steps(97)"
1000000 loops, best of 5: 210 nsec per loop
$ python -m timeit -s "from mymodule import collatz_steps" "collatz_steps(97)"
100000 loops, best of 5: 5.8 usec per loop
~20–30× faster. That gap is the whole reason to compile — the hot loop
lives in C++, the packaging that runs once stays in Python.
The win shrinks for trivial inputs: with no work inside the call, you're just
timing the Python↔C boundary.