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.