The point of a calculated field is not performance, it's keeping complexity out of multiple searches.
While you usually don't gain any performance compared to an inline eval command in your search, you also don't lose any.
By moving your case expression to a calculated field, you enable every searcher to use the result without having to know about how it was computed, without having to compute it themselves in the search, without having to update the expression in dozens of places in case something changed.
Shameless plug: For detailed thoughts on calculated fields' search performance considerations, attend my .conf2016 talk 😄
Calculated fields can be created during search time only. There is no expression evaluation available at index-time (only regex replacement /extraction is available). What are doing in the calculated field BTW?
There are, but as I said earlier, they can't be created using an expression, like eval-case. See more on Indexed-time field extraction here. Please note that they require additional processing time (at index time) and storage on indexers.