[Rcpp-devel] Differences between RcppEigen and RcppArmadillo

c s conradsand.arma at gmail.com
Mon Jun 18 06:09:34 CEST 2012


On Sun, Jun 17, 2012 at 4:21 AM, Douglas Bates wrote:
> These comments may provoke a heated response from Conrad but,
> if so, I don't plan to respond further.  Eigen and Armadillo are different
> approaches, each with their own advantages and disadvantages.

I'm actually in favour of heterogeneous solutions and support the use
of C++ for performance critical implementations.

Relying on only one solution (ie. homogeneity) is bad from a
"survival" point of view, due to very similar reasons as in the
biological world: a fault can affect the entire population, or a virus
can propagate itself quite easily and do lots of nasty things.  For
example, see the recent snafu with state-sponsored viruses attacking
Windoze installations, ie, Stuxnet and Flame:
http://www.h-online.com/security/features/FAQ-Flame-the-super-spy-1587063.html

In my view, the C++ brethren Armadillo and Eigen are not really up
against each other, but against Matlab.  Matlab is like crack or
crystal meth.  Highly addictive, but in the end bad for you.
Mathworks, the company that produces Matlab, hooks people in while
they are university students.  It provides low prices to educational
institutions, and charges through the roof for everyone else.
Students become graduates, which are then employed by the companies
that are in effect stuck with using Matlab.  This is a strategy known
as vendor lock-in, exploited by monopolists.  Other descriptions
consistent with the business model of Mathworks are "parasite" and
"leech".

One way of keeping Mathworks in check is to provide alternative
solutions that have similar functionality (eg. easy visualisation of
data and rapid prototyping).  One of them in GNU Octave, which really
needs a JIT compiler to effectively compete with Matlab..  Another is
R.  I believe R currently doesn't have a JIT compiler (I haven't
checked lately), and hence the very useful Rcpp fills in the
performance gap.

One also has to address the current reality that people still overly
rely on Matlab, and have the problem of converting their Matlab code
into production environments / products.  This is where C++ comes in,
and libraries such as Armadillo (with its Matlab-like syntax) can be
quite handy.


More information about the Rcpp-devel mailing list