Benchmarks

The test file information are listed below:

IndexFilenameNumber of CellsDimensionAMRPublic
11d_single.vlsv201NoYes
2bulk.2d.vlsv6,3001NoYes
32d_double.vlsv51,2002NoYes
42d_AFC.vlsv4,612,5002NoYes
53d_EGI.vlsv3,966,5803YesNo

Access to the public data can be found from vlsv_data.

Note

The numbers shown here are comparisons between Analysator v0.9 and Vlasiator.jl v0.9.32 running Python 3.6.9/3.9.7 and Julia 1.8.3 with the scripts perf.jl and perf.py. The timings are collected from a i5-10210U @ 1.6GHz CPU with 16 GB RAM if not specified.

  • Loading meta data[1]
File IndexJulia [ms]Python [ms]Ratio
10.181.196.6
20.511.663.1
32.333.111.3
45062770.5
55492830.5
  • Reading DCCRG grid variables
File IndexJulia [ms]Python [ms]Ratio
10.0040.0717
20.02[2]0.084
30.17[2]0.211.2
420[2]231.1
511[2]111.0
  • Reading field solver grid variables[3]
File IndexSizeJulia [s]Julia, mmap [s]Python [s]Ratio
56.2 GiB Float32188567
  • Plotting 2D density contours on a uniform mesh (no GUI)
File IndexJulia [s]Python [s]Ratio
40.55.411
  • Plotting 2D density slices from a 3D AMR mesh (no GUI)
File IndexJulia [s][4]Python [s]Ratio
50.53.16.2
  • Static virtual satellite tracking from 3D AMR data (26G per frame, 32 MB Cell IDs) on a cluster[5]
FramesJulia, 1 thread [s]Julia, 2 threads [s]Python [s]
84545341220
  • 1See the issue about sorting. The performance of EzXML is also not ideal: we may need to find a better XML parser in Julia.
  • 2Vlasiator.jl can be faster if there is no conversion from Float64 to Float32. See Precision.
  • 3The field solver grid is a regular Cartesian grid at the finest refinement level introduced after Vlasiator 5. Therefore fsgrid variables are quite large for 3D AMR runs: with limited memory (e.g. 16 GB RAM) you may encounter out-of-memory issues when reading fg_b more than once. In Vlasiator.jl, we provide the option usemmap=true for reading large arrays –- see Memory for more.
  • 4The first time execution will be slower due to JIT compilation (which is excluded in the timing here). This is known as "Time-To-First-X" in the Julia community.
  • 5University of Helsinki cluster Vorna with Intel Xeon E5-2697 @ 2.70GHz.