U
    f                     @   s   d Z ddlZddlZddlZddddgZdd Zd	d
 Zdd Zdd Ze	deej
dgfdeej
dgd fdeej
dgd fdeedgfdeedgd fdeedgd fgZdd Zedkre  dS )zDBenchmarks for utilities working with arbitrarily nested structures.    N)   s)gMbP?ms)gư>us)g&.>nsc                 C   s.   t D ]$\}}| |krd| | |  S qd S )Nz{:.2f}{})
TIME_UNITSformat)timedunit r   :/tmp/pip-target-lpfmz8o1/lib/python/tree/tree_benchmark.pyformat_time   s    r   c                 C   s   t j| d|d}|d | S )N   )repeatnumber)timeitr   )benchmark_fn	num_iterstimesr   r   r   run_benchmark%   s    r   c                 G   s   t t| f| S N)listmap)funcargsr   r   r   map_to_list*   s    r   c                    s    fdd}|S )Nc                      s    dd S )Nc                 S   s   | S r   r   )vr   r   r   <lambda>0       z5benchmark_map.<locals>.benchmark_fn.<locals>.<lambda>r   r   map_fn	structurer   r   r   /   s    z#benchmark_map.<locals>.benchmark_fnr   )r"   r#   r   r   r!   r   benchmark_map.   s    r$   Z
tree_map_1Z
tree_map_8   Ztree_map_64@   Zbuiltin_map_1Zbuiltin_map_8Zbuiltin_map_64c                  C   s,   t  D ]\} }t| tt|dd qd S )Ni  )r   )
BENCHMARKSitemsprintr   r   )namer   r   r   r   main>   s    r+   __main__)__doc__collectionsr   treer   r   r   r   r$   OrderedDictZmap_structurer'   r+   __name__r   r   r   r   <module>   s.   
