o
    Qe                     @   s<   d dl Z dd ZdddZdddZdd	d
ZdddZdS )    Nc                 C   s&   d}| D ]}||d |d  7 }q|S Nr       )rangesresultZ
time_ranger   r   PD:\Projects\ConvertPro\env\Lib\site-packages\paddle/profiler/statistic_helper.py
sum_ranges   s   r   Fc                 C   s   g }t | dkrc|s| jdd d d}|| | d | | d f tdt | D ]8}| | d |d d krb| | d |d d krS|d d | | d f|d< q*|| | d | | d f q*|S )Nr   c                 S   s   | d S )Nr   r   )xr   r   r   <lambda>   s    z#merge_self_ranges.<locals>.<lambda>)keyr   )lensortappendrange)Z
src_ranges	is_sortedmerged_rangesZcur_indxr   r   r   merge_self_ranges   s"   


r   c           
      C   s  g }|st | } t |}t| }t|}|dkr|dkr|S |dkr$|S |dkr*| S d}d}| | }|| }	|d |	d k rH|| |d7 }n	||	 |d7 }||k r||k r| | }|| }	|d |	d k r|d |d d kr|d |d d kr|d d |d f|d< n||d |d f |d7 }n:|d7 }n5|	d |d d kr|	d |d d kr|d d |	d f|d< n||	d |	d f |d7 }n|d7 }||k r||k sY||k r | | }|d |d d kr|d |d d kr|d d |d f|d< n||d |d f |d7 }n|d7 }||k s||k re|| }	|	d |d d kr\|	d |d d krL|d d |	d f|d< n||	d |	d f |d7 }n|d7 }||k s%|S )Nr   r   r   r   r   r   )
range_list1range_list2r   r   len1len2indx1indx2range1range2r   r   r   merge_ranges*   sr   












r   c           
      C   s  g }t | dkst |dkr|S |st| } t|}t | }t |}d}d}| | }|| }	||k rF||k rF|	d |d krP|d7 }||krK	 |S || }	n|	d |d kr|	d |d k r|	d |d ksjJ ||d |	d f |	d |d f}|d7 }||kr	 |S || }	n|	d |d kr|	d |d ksJ || |d |	d f}	|d7 }||kr	 |S | | }n|	d |d k r|	d |d ksJ ||	 |	d |d f}|d7 }||kr	 |S || }	nR|	d |d k r"|	d |d ksJ ||	d |d f |d |	d f}	|d7 }||kr	 |S | | }n|	d |d ks-J |d7 }||kr9	 |S | | }||k rF||k s8|S r   )r   r   r   
r   r   r   Zresult_ranger   r   r   r   r   r   r   r   r   intersection_rangeso   s~   -
 $





	

1r   c           
      C   s  g }|st | } t |}t| dkr|S t|dkr| S t| }t|}d}d}| | }|| }	|t| k r|t|krQ|| |d7 }||krL	 |S | | }n|	d |d krf|d7 }||kre|| }	n|	d |d kr|	d |d k r|	d |d f}|d7 }||kr|| }	nh|	d |d kr|	d |d ksJ |d |	d f}	|d7 }||kr| | }nA|	d |d k r|	d |d ksJ ||d |	d f |	d |d f}n|	d |d ksJ || |d7 }||kr| | }|t| k s6|S r   r   r   r   r   r   subtract_ranges   sf   

 
 r    )F)collectionsr   r   r   r   r    r   r   r   r   <module>   s   


EB