Weekly backup.
This commit is contained in:
96
20220416112952-timethese.org
Normal file
96
20220416112952-timethese.org
Normal file
@@ -0,0 +1,96 @@
|
||||
: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]]
|
Reference in New Issue
Block a user