Research Article

ScalaLab and GroovyLab: Comparing Scala and Groovy for Scientific Computing

Table 1


ScalaLab MATLAB SciLabGroovyLab

SpeedVery fast, execution speed depends on the Java runtime, generally faster than MATLAB at script code, but slower for routines implemented as built-in with MATLABVery fast, especially the built-in routines which are highly optimized; overall ScalaLab and MATLAB run at comparable speeds and which one outperforms depends on the caseMuch slower than ScalaLab (or MATLAB), about 20 to 100 times slower. Newer versions of SciLab, however, improved a lot; speed differences are now about 3 to 10 timesSlower than ScalaLab, about 2 to 5 times slower. However, with statically typed blocks of code, performance is at about the same level as Java/Scala

PortabilityVery portable, anywhere exists installed Java 8 JREThere exist versions for each main platform, for example, Windows, Linux, MacOSThere exist versions for each main platform, for example, Windows, Linux, MacOSVery portable, anywhere exists installed Java 8 JRE

Open sourceYesNoYesYes

User-friendlinessVery user friendlyVery user friendlyVery user friendlyVery user friendly

Libraries/toolbox availabilityAll the JVM libraries A lot of toolboxes are available, but generally not freeThere exist toolboxes for basic applications but for specialized ones it is difficult to findAll the JVM libraries

DocumentationLittle yet, and limited to on-line help, since even main code components are in the development processExtensive documentationSufficient documentationOn-line documentation only

Flexibility of the language (i.e, syntax malleability)The Scala language is designed to be flexible and with very malleable syntaxThe syntax of MATLAB is not designed to be extensibleSciLab is not designed to be extensibleThe Groovy language is dynamic and different tricks from the Scala’s case can form customizable syntax

Development of large applicationsScala has a lot of novel features that can facilitate the development of large applications. ScalaLab applications can run standalone, as any Java codeThe notion of MATLABPATH integrates many MATLAB scripts, something not very scalableSimilar to MATLAB, the SciLab scripts are not well suited for complex applications, but rather they fit well for rapid testing of scientific algorithmsGroovy has a full compiler that can be used to produce standalone code of a large application project

Active user development communityScalaLab is a new project, and thus up-to-now lacks a large user base MATLAB has a huge user baseSciLab has a large user base, however, much smaller than MATLAB’sGroovyLab is a new project, and thus up-to-now lacks a large user base