module numbers.speed_measure
¶
Short summary¶
module cpyquickhelper.numbers.speed_measure
Measures speed.
Functions¶
function |
truncated documentation |
---|---|
Returns functions to measure. |
|
Prints out some information about speed computation of this laptop. See Measures branching in C++ from python to compare. |
|
Measures a statement and returns the results as a dictionary. |
Documentation¶
Measures speed.
- cpyquickhelper.numbers.speed_measure._fcts()¶
Returns functions to measure.
- cpyquickhelper.numbers.speed_measure.check_speed(dims=[100000], repeat=10, number=50, fLOG=<built-in function print>)¶
Prints out some information about speed computation of this laptop. See Measures branching in C++ from python to compare.
- Parameters:
dims – sets of dimensions to try
repeat – average over repeat experiment
number – number of execution in one row
fLOG – logging function
- Returns:
iterator on results
numpy is multithreaded. For an accurate comparison, this needs to be disabled. This can be done by setting environment variable
MKL_NUM_THREADS=1
or by running:import mkl mkl.set_num_threads(1)
One example of use:
<<<
from cpyquickhelper.numbers import check_speed res = list(check_speed(dims=[100, 1000])) import pprint pprint.pprint(res)
>>>
{'average': 0.0005079867783933878, 'deviation': 1.1958059516266147e-05, 'min_exec': 0.0004969746805727482, 'max_exec': 0.0005357339978218079, 'repeat': 10, 'number': 50, 'ttime': 0.005079867783933878, 'size': 100, 'name': 'simple_dot'} {'average': 0.0008773650042712688, 'deviation': 2.460095791226247e-05, 'min_exec': 0.0008597811684012413, 'max_exec': 0.00093041080981493, 'repeat': 10, 'number': 50, 'ttime': 0.008773650042712688, 'size': 100, 'name': 'c11_dot'} {'average': 0.000871432526037097, 'deviation': 9.720581409074041e-06, 'min_exec': 0.0008638119325041771, 'max_exec': 0.0008973707444965839, 'repeat': 10, 'number': 50, 'ttime': 0.00871432526037097, 'size': 100, 'name': 'c11_dot16'} {'average': 0.0008696702308952809, 'deviation': 1.4164512492301503e-05, 'min_exec': 0.0008592009544372559, 'max_exec': 0.0009024110622704029, 'repeat': 10, 'number': 50, 'ttime': 0.008696702308952808, 'size': 100, 'name': 'c11_dot16_nofcall'} {'average': 0.0008671920280903578, 'deviation': 9.310717305545208e-06, 'min_exec': 0.000860041007399559, 'max_exec': 0.0008909408934414387, 'repeat': 10, 'number': 50, 'ttime': 0.008671920280903578, 'size': 100, 'name': 'c11_dot16_sse'} {'average': 0.0005837018601596355, 'deviation': 1.4941351488880551e-05, 'min_exec': 0.0005736537277698517, 'max_exec': 0.0006248429417610168, 'repeat': 10, 'number': 50, 'ttime': 0.0058370186015963554, 'size': 1000, 'name': 'simple_dot'} {'average': 0.0012506415136158467, 'deviation': 1.5738742324417163e-05, 'min_exec': 0.0012361970730125904, 'max_exec': 0.0012817573733627796, 'repeat': 10, 'number': 50, 'ttime': 0.012506415136158466, 'size': 1000, 'name': 'c11_dot'} {'average': 0.0012711629271507264, 'deviation': 1.552887823677912e-05, 'min_exec': 0.0012576966546475887, 'max_exec': 0.001299785915762186, 'repeat': 10, 'number': 50, 'ttime': 0.012711629271507263, 'size': 1000, 'name': 'c11_dot16'} {'average': 0.001252140337601304, 'deviation': 1.3439046487097159e-05, 'min_exec': 0.001241557765752077, 'max_exec': 0.0012872861698269844, 'repeat': 10, 'number': 50, 'ttime': 0.01252140337601304, 'size': 1000, 'name': 'c11_dot16_nofcall'} {'average': 0.0012191256042569875, 'deviation': 1.3884920591285533e-05, 'min_exec': 0.0012063579633831978, 'max_exec': 0.0012536379508674145, 'repeat': 10, 'number': 50, 'ttime': 0.012191256042569876, 'size': 1000, 'name': 'c11_dot16_sse'} [{'average': 0.0005079867783933878, 'deviation': 1.1958059516266147e-05, 'max_exec': 0.0005357339978218079, 'min_exec': 0.0004969746805727482, 'name': 'simple_dot', 'number': 50, 'repeat': 10, 'size': 100, 'ttime': 0.005079867783933878}, {'average': 0.0008773650042712688, 'deviation': 2.460095791226247e-05, 'max_exec': 0.00093041080981493, 'min_exec': 0.0008597811684012413, 'name': 'c11_dot', 'number': 50, 'repeat': 10, 'size': 100, 'ttime': 0.008773650042712688}, {'average': 0.000871432526037097, 'deviation': 9.720581409074041e-06, 'max_exec': 0.0008973707444965839, 'min_exec': 0.0008638119325041771, 'name': 'c11_dot16', 'number': 50, 'repeat': 10, 'size': 100, 'ttime': 0.00871432526037097}, {'average': 0.0008696702308952809, 'deviation': 1.4164512492301503e-05, 'max_exec': 0.0009024110622704029, 'min_exec': 0.0008592009544372559, 'name': 'c11_dot16_nofcall', 'number': 50, 'repeat': 10, 'size': 100, 'ttime': 0.008696702308952808}, {'average': 0.0008671920280903578, 'deviation': 9.310717305545208e-06, 'max_exec': 0.0008909408934414387, 'min_exec': 0.000860041007399559, 'name': 'c11_dot16_sse', 'number': 50, 'repeat': 10, 'size': 100, 'ttime': 0.008671920280903578}, {'average': 0.0005837018601596355, 'deviation': 1.4941351488880551e-05, 'max_exec': 0.0006248429417610168, 'min_exec': 0.0005736537277698517, 'name': 'simple_dot', 'number': 50, 'repeat': 10, 'size': 1000, 'ttime': 0.0058370186015963554}, {'average': 0.0012506415136158467, 'deviation': 1.5738742324417163e-05, 'max_exec': 0.0012817573733627796, 'min_exec': 0.0012361970730125904, 'name': 'c11_dot', 'number': 50, 'repeat': 10, 'size': 1000, 'ttime': 0.012506415136158466}, {'average': 0.0012711629271507264, 'deviation': 1.552887823677912e-05, 'max_exec': 0.001299785915762186, 'min_exec': 0.0012576966546475887, 'name': 'c11_dot16', 'number': 50, 'repeat': 10, 'size': 1000, 'ttime': 0.012711629271507263}, {'average': 0.001252140337601304, 'deviation': 1.3439046487097159e-05, 'max_exec': 0.0012872861698269844, 'min_exec': 0.001241557765752077, 'name': 'c11_dot16_nofcall', 'number': 50, 'repeat': 10, 'size': 1000, 'ttime': 0.01252140337601304}, {'average': 0.0012191256042569875, 'deviation': 1.3884920591285533e-05, 'max_exec': 0.0012536379508674145, 'min_exec': 0.0012063579633831978, 'name': 'c11_dot16_sse', 'number': 50, 'repeat': 10, 'size': 1000, 'ttime': 0.012191256042569876}]
- cpyquickhelper.numbers.speed_measure.measure_time(stmt, context=None, repeat=10, number=50, div_by_number=False, max_time=None)¶
Measures a statement and returns the results as a dictionary.
- Parameters:
stmt – string
context – variable to know in a dictionary
repeat – average over repeat experiment
number – number of executions in one row
div_by_number – divide by the number of executions
max_time – execute the statement until the total goes beyond this time (approximatively), repeat is ignored, div_by_number must be set to True
- Returns:
dictionary
<<<
from cpyquickhelper.numbers import measure_time from math import cos res = measure_time(lambda: cos(0.5)) print(res)
>>>
{'average': 2.9025552794337273e-05, 'deviation': 1.3263591317055884e-06, 'min_exec': 2.780882641673088e-05, 'max_exec': 3.282912075519562e-05, 'repeat': 10, 'number': 50, 'ttime': 0.0002902555279433727, 'context_size': 64}
See Timer.repeat for a better understanding of parameter repeat and number. The function returns a duration corresponding to number times the execution of the main statement.
Changed in version 0.4: Parameter max_time was added.