I know, this thread is really, _really_ old. I found it while searching for some infos to switch of wifi on a ESP8266. Again, this board had the best result I am working on a kinda arty project, involving displays and cameras and whatnot - if I can get it all running.
The benchmark results baffled me. In my experience, the ESP8266 is not really that slow. The culprit is, as was stated more than once, that the watchdog timer wants to be fed time and again.
In my view, it is absolutely valid to fiddle with that beast. If I know that something needs some time without any risk to go fubar, I set the watchdog accordingly. With 10 seconds timeout (more than enough to calculate the prime numbers, I get thse result:
80 MHz, w/o IRAM: 797219 µs
80 MHz, with IRAM: 760123 µs
160 MHz, w/o IRAM: 398799 µs
160 MHz, with IRAM: 380203 µs
All I did was adding the line "ESP.wdtEnable(10000);" in setup() and disabling the delay(0). The numbers are definitely worse than with the litte STM32F103, but it's just a factor of 2 or 4. I have not much code that is that speed sensitive, so it's all about IO pins for me. If I need them, it is the STM32, but if I want to "install" a web server with a drop of hot glue, I take the ESP
Anything not related to STM32