97 lines
2.8 KiB
Org Mode
97 lines
2.8 KiB
Org Mode
:PROPERTIES:
|
|
:ID: 4e351659-8a96-44af-bacb-f548ea35913e
|
|
:mtime: 20220416113532
|
|
:ctime: 20220416112952
|
|
:END:
|
|
#+title: timethese
|
|
|
|
* Introduction
|
|
* Package permettant de mesurer les temps nécessaires à l'exécution de plusieurs méthodes et de les comparer.
|
|
* Approche en 3 étapes :
|
|
* Définition des méthodes à benchmarker,
|
|
* Préparation et exécution des tests (usage de la classe /cmpthese/),
|
|
* Formattage des résultas (pretty print).
|
|
|
|
* Installation
|
|
#+BEGIN_SRC shell
|
|
pip install timethese
|
|
#+END_SRC
|
|
|
|
* Exemple
|
|
#+BEGIN_SRC python :results output
|
|
from timethese import cmpthese, pprint_cmp, timethese
|
|
|
|
xs = range(10)
|
|
|
|
|
|
# 1. DEFINE FUNCTIONS
|
|
|
|
def map_hex():
|
|
list(map(hex, xs))
|
|
|
|
|
|
def list_compr_hex():
|
|
list([hex(x) for x in xs])
|
|
|
|
|
|
def map_lambda():
|
|
list(map(lambda x: x + 2, xs))
|
|
|
|
|
|
def map_lambda_fn():
|
|
fn = lambda x: x + 2
|
|
list(map(fn, xs))
|
|
|
|
|
|
def list_compr_nofn():
|
|
list([x + 2 for x in xs])
|
|
|
|
|
|
# 2. FEED THE FUNCTIONS TO CMPTHESE
|
|
|
|
# AS DICT:
|
|
|
|
cmp_res_dict = cmpthese(
|
|
10000,
|
|
{
|
|
"map_hex": map_hex,
|
|
"list_compr_hex": list_compr_hex,
|
|
"map_lambda": map_lambda,
|
|
"map_lambda_fn": map_lambda_fn,
|
|
"list_compr_nofn": list_compr_nofn,
|
|
},
|
|
repeat=3,
|
|
)
|
|
|
|
|
|
# OR AS LIST:
|
|
|
|
cmp_res_list = cmpthese(
|
|
10000, [map_hex, list_compr_hex, map_lambda, map_lambda_fn, list_compr_nofn,], repeat=3,
|
|
)
|
|
|
|
# 3. PRETTY PRINT THE RESULTS
|
|
|
|
print(pprint_cmp(cmp_res_dict))
|
|
print(pprint_cmp(cmp_res_list))
|
|
#+END_SRC
|
|
|
|
#+RESULTS:
|
|
#+begin_example
|
|
Rate list_compr_nofn map_hex map_lambda map_lambda_fn list_compr_hex
|
|
list_compr_nofn 1889389/s . 21% 42% 45% 68%
|
|
map_hex 1565635/s -17% . 18% 21% 40%
|
|
map_lambda 1328914/s -30% -15% . 2% 18%
|
|
map_lambda_fn 1298638/s -31% -17% -2% . 16%
|
|
list_compr_hex 1121963/s -41% -28% -16% -14% .
|
|
Rate 4.list_compr_nofn 0.map_hex 3.map_lambda_fn 2.map_lambda 1.list_compr_hex
|
|
4.list_compr_nofn 1836243/s . 17% 37% 38% 73%
|
|
0.map_hex 1568271/s -15% . 17% 18% 47%
|
|
3.map_lambda_fn 1336453/s -27% -15% . 0% 26%
|
|
2.map_lambda 1334377/s -27% -15% -0% . 25%
|
|
1.list_compr_hex 1063984/s -42% -32% -20% -20% .
|
|
#+end_example
|
|
|
|
* Références
|
|
* [[https://github.com/jwbargsten/python-timethese][Github]]
|