B
    d                 @   sf   d Z ddlT ddlZddlZdZdd Zdd	 Zd
d ZdddZdd Z	e
dkrbed e	  dS )z*Benchmark the cu2qu algorithm performance.   )*    N   c               C   s   dd t dD S )Nc             S   s"   g | ]}t d d tdD qS )c             s   s   | ]}t td dV  qdS )r   i   N)floatrandomrandint).0Zcoord r	   f/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/fontTools/cu2qu/benchmark.py	<genexpr>   s    z,generate_curve.<locals>.<listcomp>.<genexpr>   )tuplerange)r   pointr	   r	   r
   
<listcomp>   s   z"generate_curve.<locals>.<listcomp>   )r   r	   r	   r	   r
   generate_curve	   s    r   c               C   s
   t  tfS )N)r   MAX_ERRr	   r	   r	   r
   setup_curve_to_quadratic   s    r   c              C   s    d} dd t | D tg|  fS )N   c             S   s   g | ]
}t  qS r	   )r   )r   Zcurver	   r	   r
   r      s    z-setup_curves_to_quadratic.<locals>.<listcomp>)r   r   )Z
num_curvesr	   r	   r
   setup_curves_to_quadratic   s    r      c       	      C   sx   d| }|r.t d||f dd |d| 7 }nt d| dd dd }tj|||||d	}t d
t|d |   d S )NZsetup_z%s with %s:r   )end_z%s:c                s&   t     t    fdd}|S )Nc                  s
      S )Nr	   r	   )function
setup_funcr	   r
   wrapped#   s    z/run_benchmark.<locals>.wrapper.<locals>.wrapped)globals)r   r   r   r	   )r   r   r
   wrapper    s    

zrun_benchmark.<locals>.wrapper)repeatnumberz	%5.1fusg    .A)printtimeitr    min)	Zbenchmark_modulemoduler   Zsetup_suffixr    r!   r   r   resultsr	   r	   r
   run_benchmark   s    r'   c               C   s   t ddd t ddd dS )z*Benchmark the cu2qu algorithm performance.zcu2qu.benchmarkcu2quZcurve_to_quadraticZcurves_to_quadraticN)r'   r	   r	   r	   r
   main)   s    r)   __main__)r   r   r   )__doc__r(   r   r#   r   r   r   r   r'   r)   __name__seedr	   r	   r	   r
   <module>   s   

