There is a tradeoff with this kind of immutable oriented programming that you trade off relatively easy parallelism for heinous memory thrashing--and cache misses are already a huge bottleneck on modern architectures. Rust seems to have struck a good balance here, I'm keeping a close eye on it as it continues to mature.
See this blog post for more <https://donsbot.wordpress.com/2008/06/04/haskell-as-fast-as-...
However do you agree that is more easy to solve memory (buying new hardware) than handle with race condition? kkkk
Then, Maybe we need to think about optimize our daily data structures.. I have following a few papers about this.. e.g:
http://dl.acm.org/citation.cfm?id=2658763 http://dl.acm.org/citation.cfm?id=2993251
This is especially important on mobile, FPGAs and in cases where sheer volume of data is huge. (GPU and big data)