There is also IT ++ , which has an easy-to-use syntax similar to Matlab. Armadillo also has very similar syntax, but is known to be significantly faster than IT ++. (Armadillo uses meta-programming of templates, but IT ++ does not). Both Armadillo and IT ++ provide their own decomposition, decomposition of singular values, matrix inversion, etc. In contrast, uBlas uses template metaprogramming for speed, but can invert the matrix, etc.
Speed difference cones in a compromise in terms of different sets of functionality in various fields, for example. IT ++ has many functions for signal processing, and Armadillo almost exclusively focuses on linear algebra.
This causes a related point: the speed of the library is only one of the factors of its overall utility or value. For example, you may have a very fast library, but it takes quite a while to learn its API / syntax, or the syntax is difficult to use. Another problem is the amount of functionality already present in the library - for example. You may need to write your own functions. You may also need to consider whether the purpose of the library is to facilitate the conversion of Matlab code to C ++ or whether you are already familiar with the Matlab syntax.
Given the above points, you can end up spending more time coding and debugging than running your code, which ultimately wins the goal of a fast library. In other words, raw execution speed is just one factor, and you cannot rely on it as a common deciding factor. Development time is also a very important factor (for example, "time for the product"), not only in terms of costs, but also because less time spent on coding frees you from other things.
source share