As has been already pointed out, in theory mining on the pool with the least shares should be the most profitable, no matter the pools hash rate. This *should* increase your income but also increases your variance a lot (for example, a slow pool may only find a block once a week or something).
STATIC_FAST always mines on the fastest prop pool under 43% round shares (this translates to a priority value under 1.0 in CP). This reduces your variance because you're always mining on fast pool and you get payments more often. It theoretically decreases income because it may very well completely ignore slow pools that are earlier in the round than fast ones. Since these early shares are the most valuable, you'd be sacrificing your income for less variance.
As for efficiency calculation - indeed the math itself is trivial, but the problem lies with actually getting the payment from every pool. CherryPicking can (and does) already scrape information from websites as well as JSON APIs, but we have 2 pretty significant issues:
1) Most pools do not provide this information via JSON API + user key or anything like that
2) Most pools do provide this information on a web page which would be easy enough to get, but only if you're logged in. This would mean having some sort of cookie/session emulation like a browser has which would be quite difficult and I suspect time consuming to implement. I haven't worked on anything like that before so there would be a significant learning curve for me as well and all this translates into lots of time. I believe there are much more important things to add/improve in CP for the time being.
@Bloodred
I have a suggestion that could improve your hopper a little, maybe you could add some option on argument so we can have 2 or more different config files. The reason for this is using different arguments on different situations. The way I see it you'd just need to add a argument to set from wich file CherryPicking should read the configs, if no argument is used, it'd read it from poclbm.cfg as always.
Edit: Either that or making a way so we can use this hopper as a proxy, being able to connect multiple miners to it. But I guess that would ask for a ton of coding work.
Yeah, I guess I could implement something like that. Making it a proxy would completely eliminate the advantage of client hopping though.