Going with AnyEvent/EV was a costly mistake for our project. Due to our particular circumstances (tight schedule/funding), we were relatively intolerant of bugs showing up in the platform and one did:
Timer events were getting lost under heavy load.
Ordinarily, we would have contacted the author to work through the problem but two things mitigated against this:
1) We just couldn't risk our critical path to someone not directly answerable to our project.
2) We would benefit by going to mulitcore anyway.
We went ahead and opted for an IPC approach. The rewrite took 2 weeks.
I had to add a new Norm to utilize the popcnt instruction available on newer processors, but the way this module source was set up, adding the call to the gcc built-in function: int __builtin_popcount (unsigned int x) was a breeze.