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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.