I think it's good to have a second pair of eyes to spot mistakes.
It especially helps for junior employees, or really any time someone knows much more about some part than someone else.
It's also supposed to prevent malicious code, I think. But note that that only works if unreviewed changes are automatically blocked or reported, which isn't always the case.
One should probably search "// todo", run unit tests, linters and formatters (and obviously compilers) on any code before sending it to review.
To really determine, one would have to know how much time it costs to do, and how much time is saved with it (e.g. bugs and rewrites prevented, by spotting mistakes, enforcing uniform style).
I wouldn't be surprised if it saves about double what it costs.
We use it at work, and I even use it for open source projects with 2 people.
Mark