class benchmark(repeats=5, scale=1, verbose=False, python=True, numpy=True, parallel=False, return_timers=False)[source]#

Benchmark Python performance

Performs a set of standard operations in both Python and Numpy and times how long they take. Results are returned in terms of millions of operations per second (MOPS). With default settings, this function should take very approximately 0.1 s to run (depending on the machine, of course!).

For Python, these operations are: for loops, list append/indexing, dict set/get, and arithmetic. For Numpy, these operations are: random floats, random ints, addition, and multiplication.

  • repeats (int) – the number of times to repeat each test

  • scale (float) – the scale factor to use for the size of the loops/arrays

  • verbose (bool) – print out the results after each repeat

  • python (bool) – whether to run the Python tests

  • numpy (bool) – whether to run the Numpy tests

  • parallel (bool/int) – whether to run the tests across all cores

  • return_timers (bool) – if True, return the timer objects instead of the “MOPS” results


A dict with keys “python” and “numpy” for the number of MOPS for each


sc.benchmark() # Returns e.g. {'python': 11.43, 'numpy': 236.595}

numpy_mops = sc.benchmark(python=False)['numpy']
if numpy_mops < 100:
    print('Your computer is slow')
elif numpy_mops > 400:
    print('Your computer is fast')
    print('Your computer is normal')

sc.benchmark(parallel=True) # Use all CPUs
New in version 3.0.0.
New in version 3.1.0: “parallel” argument; increased default scale