: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]]