I recently made a post on stack, Calculate hash rate in IOS, in hopes of deciphering how the hash rate is calculated when benchmarking performance. The reason I wanted to do this is to compare against the results that are presented in Is it Possible to Mine Cryptocurrencies with an iPhone? After days of hunting around on the internet, I've come to a conclusion that calculating the hash rate is not as straight forward as it seems.
I want to compute a hash rate for my IOS device. What algorithm and algebraic expression should I use to calculate the hash rate, to be able to compare my results against other devices, like laptops and graphics cards?
You can drop the last few rounds of the hash implementation, and only compute the first 32 bits of the output (and if that those 32 bits are 0, recompute the hash in less optimized software to determine if it's a fully valid block).
You can exploit the fact that successive attempted block headers only differ in a few bytes, reusing part of the computation.
You can precompute things to find combinations of multiple block header attempts that share more parts of the evaluation than random ones (this is what AsicBoost is based on).
So determining the exact hashrate of certain hardware is a nontrivial engineering effort because of the above, and is complicated by things like architecture specific optimization, and things like exploiting special hardware instructions.
Such engineering has obviously not been done for iPhone, as it's a nonsensical target for computation. My back of the envelope computation suggests it could probably do a few MH/s, but as that still means ~50 million years to find a block, not much effort will be spent on this.