I have recently found out about Clojure and am
rather impressed.  I am seriously considering
whether Clojure is a viable language for use at
work.  The main stumbling block would be if
performance (both speed and memory) turns out
to be insufficent.  I currently use C++, but I'd love
to be able to leave C++ behind and use Clojure
(or similar) instead.

The programs I write perform applied mathematical
optimization (using mainly integer arithmetic)
and often take hours (occasionally even days)
to run.  So even small percentage improvements
in execution speed can make a significant
practical difference.  And large problems can use
a large amount of memory - so memory efficiency
is also a concern.

Given these performance considerations, at first
glance Clojure does not seem like a good choice.
But I don't want to give up on the idea just yet.
The allure of modernized lisp-style programming
is really tempting.

There are three key factors that still give me
hope:

1. Some of the algorithms I use have the potential
to be parallelized.  I am hoping that as the number
of cores in PCs increase, at some point Clojure's
performance will beat C++'s due to Clojure's
superior utilization of multiple cores.  (Any ideas
on how many cores are needed for this to become
true?)

2. The JVM is continually being improved.  Hopefully
in a year or two, the performance of HotSpot will be
closer to that of C++.  (But maybe this is just
wishful thinking.)

3. Maybe I can implement certain performance critical
components in C++ via the JNI.  (But I get the impression
that JNI itself isn't particularly efficient.  Also, the more
I pull over into the C++ side, the fewer advantages to
using Clojure.)

If all else fails, maybe I could use Clojure as a prototyping
language.  Then when I get it right, I code up the actual
programs in C++.  But probably a lot would get lost in
the translation from Clojure -> C++ so would it be worth
it?

I'd love to be convinced that Clojure is a viable choice,
but I need to be a realist too.  So what do people think?
How realistic are my three "hopes"?  And are there
any other performance enhancing possibilities that I
have not taken into account?

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
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to