title: Does functional programming reduce the Von Neumann bottleneck?
body: <p>I believe (from doing some reading) that reading/writing data across the bus from CPU caches to main memory places a considerable constraint on how fast a computational task (which needs to move data across the bus) can complete - the <em>Von Neumann bottleneck</em>.</p>
  
  <p>I have come across a few articles so far which mention that functional programming can be more performant than other paradigms like the imperative approach eg. OO (in certain models of computation).</p>
  
  <p>Can someone please explain some of the ways that purely functional programming can reduce this bottleneck? ie. are any of the following points found (in general) to be true? </p>
  
  <ol>
  <li><p>Using immutable data structures means generally less data is moving across that bus - less writes?</p></li>
  <li><p>Using immutable data structures means that data is possibly more likely to be hanging around in CPU cache - because less updates to existing state means less flushing of objects from cache?</p></li>
  <li><p>Is it possible that using immutable data structures means that we may often never even read the data back from main memory because we may create the object during computation and have it in local cache and then during same time slice create a new immutable object off of it (if there is a need for an update) and we then never use original object  ie. we are working a lot more with objects that are sitting in local cache.</p></li>
  </ol>