Updates to Maple 18 have greatly improved performance and efficiency in several key categories. Improvements in performance and efficiency include:
In Maple 18, we upgraded the version of GMP, the GNU Multiple Precision Arithmetic Library, used for the Maple engine to 5.1.1. This greatly improves performance for new CPUs, as well as improves optimizations for existing platforms, especially 64bit platforms.
> 
The following figure shows the difference in performance between Maple 17 and Maple 18 for basic operations that utilize the GMP. This operated on a Intel64bit i7 processor.
Maple 18 has incorporated the LLVM compiler infrastructure to provide an outofthebox solution for the native code compilation feature of the Compiler:Compiler command. The addition of LLVM offers many advantages over previous releases.
LLVM is built directly into the Maple kernel rather than existing as a separate process that is called from Maple to perform the compilation task. This tight integration of the compiler provides the primary advantage over previous releases. Specifically, this streamlines calls to Compile since the overhead of creating a secondary process is eliminated. When compiling a procedure the resulting machine code is generated directly into main memory where it can be executed. In prior releases, Maple created a dynamically linked library which was then loaded prior to execution. The integration of LLVM reduces the number of costly disk accesses.
Furthermore, LLVM was designed to be used in this situation and is therefore capable of producing efficient machine code in a quicker, more lightweight manner.
The following figure displays the improvements in both compile and run time of Maple 18 in comparison to Maple 17 (64bit Windows).
Efficiency improvements in Maple 18 have resulted in significantly faster performance for large polynomial operations. For more details, see Improvements in Polynomials .




Floatingpoint computation of the singular value decomposition of a matrix has been upgraded to use a divide and conquer implementation based upon the DGESDD routine of CLAPACK. This brings a performance gain for both the SingularValues and the LeastSquares commands.
The following graph was produced by using the LeastSquares command with option method=SVD on doubleprecision datatype=float[8] matrices and single righthandside vectors, running in 64bit Linux on an Intel i5 760 2.80Ghz machine.
Maple 18 features performance updates that make arithmetic operations such as taking linear combinations of matrices or vectors much faster. The table below shows performance changes for 12 sample calculations.

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
Maple 17 
41.858 
4.748 
2.704 
0.204 
9.112 
7.120 
1.112 
0.016 
78.548 
29.741 
32.430 
29.753 
Maple 18 
0.280 
0.272 
0.004 
0.008 
0.001 
0.284 
0.832 
0.004 
0.236 
0.256 
0.256 
0.252 
Speed Up Factors 
149 
17 
676 
26 
9112 
25 
1.3 
4 
333 
116 
127 
118 
> 
> 
> 
> 
The Bessel functions BesselJ, BesselY, BesselI and BesselK, and the Hankel functions HankelH1 and HankelH2, have been added to Maple's core library of compiled special functions, for use in the evalhf environment. This results in significant efficiency improvements for operations such as plotting expressions involving Bessel functions. As a sample:
> 
> 
> 
In Maple 18, sorting is much faster due to parallelization of the sorting algorithms and the option of key sorting. The following graph shows the timing difference between sorts of random permutations run in Maple 17 and Maple 18.
For more details on the improvements to sort, see the Language and Programming updates page.
Updates to the GraphTheory package have resulted in improved performance in the DrawGraph command for large graphs. This is the result of subroutines GetEdgesColor and GetEdgesThickness using sparse Matrices when the graph is sparse. The following table shows timing for some examples. For more details, see the Updates in Graph Theory page.
Graph 
Maple 18 
Mathematica^{®} 9 
CycleGraph(10^3) 
0.124 s 
0.235 s 
CycleGraph(10^4) 
1.140 s 
2.226 s 
CycleGraph(10^5) 
18.10 s 
27.59 s 