Sure
Start with processor pipelining, branch prediction, speculative execution, etc
Then move to multiple CPUs/CPU cores
A practically-linear program (ie hardly any unpredictable branching) can be run ~5x faster on a 5-stage-pipelined CPU than an unpipelined CPU
Liekwise, parallelizable tasks can benefit from multiple CPUs/cores, whereas non-parallelizable tasks will not (much)
And then you have performance-per-watt vs raw hertz count: today, most people seem to care more about performance-per-watt than raw "performance"
Ie, ceteris peribis, a 30w 4 core CPU at 1Ghz is going to be more favorably viewed than a 100w 6 core CPU at 1.8Ghz - you can throw 12 "low power", "slower" cores at the problem for ~10% less power draw than the "high power", "faster" cores
Then you can also look at the relative efficiency of different CPU platforms and/or microcode changes in a single platform: that was the major selling point of Apple's anti-Intel ads 15-20 years ago - the PowerPC was "faster" than the Pentium because it was "more efficient" at several families of tasks (even though the raw clock speed of the PPC was typically lower than the comparable Pentium offerings)
This comes up with the Apple M-series CPUs vs the Intel chips they replaced - they may not be "faster" (in raw ghz), but they're more performant