I have watched a number of clojure talks where the concurrent programming 
benefits of Clojure are emphasized.  People have suggested that the number 
of cores in computers is growing with an exponential trend.  Software 
developers will need programming techniques (eg immutable functional 
programing) which allow full harnessing of this.  Software that doesn't 
utilize the cores will not perform well and will be left behind.

But I have heard counter arguments to this view of the future...

   1. The number of cores isn't growing very fast.
      - There isn't much demand for more cores, so this growth will be very 
      slow for most computer devices.
      2. Memory performance is the key at this time.
      - Whereas raw CPU speed previously was growing dramatically for many 
      years, this has never been true for memory speed.  As a result, memory 
      access accounts for a high percentage of execution time in modern 
software.
      - The key to writing performant software at this time (and for many 
      years to come) is to concentrate primarily on good memory performance. 
       This means...
         - Keep memory footprint of programs small.
         - Use various techniques to minimize cache misses.
      - I have heard claims that dramatic program performance improvements 
      may be achieved by concentrating on these memory considerations.
      - It is claimed that for the next 5 or 10 years, there will be much 
      more performance yield to be had by concentrating on memory 
optimizations, 
      than to concentrate on growth in the number of CPU cores for performance.
      - Yes utilize the multiple cores where appropriate, but only in 
      simple ways.  More focus should be given to performant memory usage 
within 
      each thread, than worrying about deeply entwined multi-threaded 
programming.
      - Languages like C/C++ allow for good memory optimizations much 
      better than Java.  And in Clojure, it sounds like it is harder again.
   
There is a lot that I like about Clojure, but is it unsuitable for software 
where performance will be important into the future?

Or will the increase in multi-core capabilities soon mean that memory 
performance limitations pale into insignificance compared with the 
computational gains achieved through Clojure techniques for effectively 
utilizing many cores?

Or is it possible to improve memory performance (eg reduce cache misses) 
within Clojure?

Thanks,

Mark P.

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to