You are not comparing looking up by iteration and looking up something in a hash. You are comparing looking up by iteration vs. building a hash, finding something in the hash, then doing a sub call. On top of that, you're calling split on a large string to make it even harder to draw any conclusions.
in reply to elsif chain vs. dispatch
But even if you fix all those issues, the still you can only draw conclusions if you have a large number of cases, and each case is picked equally well. Typically, one dispatches between far less cases, and not every case occurs equally often.