The process of deciding on which machine to buy or build can be overwhelming, given all the combinations of options available to consumers. Here it is discussed how the major components of a computer usually influence how Mathematica performs.

While the considerations of this article apply in general, it may be difficult to predict how Wolfram Language code will run on a particular machine. The best way to test the performance of a piece of code on a particular machine is to actually run the code on that machine.

Operating Systems

Mathematica is supported on recent releases of Windows, macOS and certain Linux distributions. The user interface is largely identical across these platforms, aside from differences arising as a result of the operating system’s design. Mathematica is optimized for its supported operating systems, so performance on each is also similar.

Central Processing Unit (CPU)

General Computing

A more powerful CPU will generally give performance improvements everywhere in your system. This includes Mathematica, other applications and the operating system itself.

The actual performance improvements from a more powerful CPU also depend on the workload. The largest gains in Mathematica can be seen in functionality that takes advantage of multiple threads, such as various numerical computation functions, image processing functions or parallelized compiled functions.

The kernel uses highly optimized multithreaded libraries such as Intel MKL and IPP, which are tuned for optimal performance and take advantage of advanced CPU features when available. This is important for vectorized machine arithmetic and numerical linear algebra (BLAS, …) routines, which are fundamental building blocks for many computational tasks.

Parallel Computing

Mathematica has a suite of parallel computing tools to take advantage of multicore processors. You can find the number of processor cores available on your machine by evaluating $ProcessorCount.

Mathematica’s Parallel Computing suite does not necessarily benefit from hyper-threading, although certain kernel functionality will take advantage of it when it provides a speedup.

Graphics Processing Unit (GPU)

Mathematica does not require a dedicated GPU; however, having one will increase the software’s performance in many areas. Certain application areas, such as CUDALink and GPU-based neural network training require CUDA-enabled NVIDIA GPUs with a minimum compute capability of 3.5.

A more powerful GPU is expected to significantly improve rendering and interacting with almost all 3D graphics and image capabilities. Interactions such as panning, zooming, rotating or resizing are expected to be quicker and smoother with a more powerful GPU. As 3D content becomes more complex, the benefits of a better GPU become more prominent; with a weaker GPU, the system will increasingly experience lag as the load becomes heavier.

System Memory (RAM)

The amount of system memory (RAM) required can vary by use case. Generally, working with larger datasets or creating more complex visualizations, among other applications, will benefit from more RAM.

Mathematica’s system requirements page lists the minimum RAM requirement for the latest release, although more is recommended for almost all applications.

Hard Drive

Modern hard drives are generally large enough to support installing Mathematica. The system requirements page has the minimum disk space requirement for the latest release.

The primary hard drive spec that affects the Wolfram System is the drive’s read/write speed. Higher speeds lead to faster loading on startup, as well as how fast the Wolfram System can load or save files.

To improve the performance of disk-intensive operations, as well as the startup time of your Wolfram System, you may want to consider a solid state drive (SSD). Reliable comparisons between HDDs and SSDs are readily available online, and their respective pros and cons generally apply to how the drive interacts with your Wolfram System as well.

Benchmarking

Mathematica contains the WolframMark package for benchmarking its performance on your computer. This contains a suite of numeric and symbolic computations, and generates a comparative report:

Needs["Benchmarking`"]
BenchmarkReport[]

Similarly, the Wolfram Language contains timing functions that can be useful in comparing your code across machines.