<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]V                 @   s   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z d d d g Z Gd d   d  Z d d d	 d  Z d d d
 d  Z	 Gd d   d  Z
 d d   Z e d k r e   d S)    N)OptionParserrunrunctxProfilec               @   s@   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 S)
_Utilsc             C   s   | |  _  d  S)N)profiler)selfr    r	   ,/opt/alt/python35/lib64/python3.5/profile.py__init__1   s    z_Utils.__init__c             C   sQ   |  j    } z* y | j |  Wn t k
 r4 Yn XWd  |  j | | |  Xd  S)N)r   r   
SystemExit_show)r   	statementfilenamesortprofr	   r	   r
   r   4   s    	z
_Utils.runc             C   sW   |  j    } z0 y | j | | |  Wn t k
 r: Yn XWd  |  j | | |  Xd  S)N)r   r   r   r   )r   r   globalslocalsr   r   r   r	   r	   r
   r   =   s    	z_Utils.runctxc             C   s-   | d  k	 r | j  |  n | j |  d  S)N)
dump_statsprint_stats)r   r   r   r   r	   r	   r
   r   F   s    z_Utils._showN)__name__
__module____qualname__r   r   r   r   r	   r	   r	   r
   r   +   s   		r      c             C   s   t  t  j |  | |  S)N)r   r   r   )r   r   r   r	   r	   r
   r   R   s    c             C   s   t  t  j |  | | | |  S)N)r   r   r   )r   r   r   r   r   r	   r	   r
   r   _   s    c               @   sn  e  Z d  Z d Z d d d d  Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d e
 d e	 d e d e d e d e i Z d d   Z Gd d   d  Z Gd d    d   Z d! d"   Z d# d$   Z d8 d& d'  Z d( d)   Z d* d+   Z d, d-   Z d. d/   Z d0 d1   Z d2 d3   Z d d4 d5  Z d6 d7   Z d S)9r   r   Nc             C   s  i  |  _  d  |  _ d |  _ d |  _ | d  k r9 |  j } | |  _ | sj t j |  _ |  _ |  j	 |  _
 n | |  _ |  j   } y t |  } Wn' t k
 r | |  _ |  j	 |  _
 YnC X| d k r |  j |  _
 n |  j |  _
 | t d d  } | |  _ |  j   |  _ |  j d  d  S)N    c             S   s   | |     S)Nr	   )timersumr	   r	   r
   get_time_timer   s    z(Profile.__init__.<locals>.get_time_timerr   )timingscurcmdc_func_namebiastimeprocess_timer   get_timetrace_dispatch_i
dispatcherlen	TypeErrortrace_dispatchtrace_dispatch_lr   tsimulate_call)r   r   r#   r-   lengthr   r	   r	   r
   r      s0    									zProfile.__init__c             C   s   |  j  } |   } | d | d |  j |  j } | d k rJ | j |  _ |  j | |  | |  r |   } | d | d |  _ n" |   } | d | d | |  _ d  S)Nr   r   c_call)r   r-   r#   r   r"   dispatch)r   frameeventargr   r-   rr	   r	   r
   r+      s    		 		zProfile.trace_dispatchc             C   st   |  j  } |   |  j |  j } | d k r8 | j |  _ |  j | |  | |  r` |   |  _ n |   | |  _ d  S)Nr0   )r   r-   r#   r   r"   r1   )r   r2   r3   r4   r   r-   r	   r	   r
   r'      s    	zProfile.trace_dispatch_ic             C   s   |  j  } |   d |  j |  j } | d k r< | j |  _ |  j | |  | |  rh |   d |  _ n |   d | |  _ d  S)Ng      N@r0   )r   r-   r#   r   r"   r1   )r   r2   r3   r4   r   r-   r	   r	   r
   trace_dispatch_mac   s    	zProfile.trace_dispatch_macc             C   st   |  j  } |   |  j |  j } | d k r8 | j |  _ |  j | |  | |  r` |   |  _ n |   | |  _ d  S)Nr0   )r&   r-   r#   r   r"   r1   )r   r2   r3   r4   r&   r-   r	   r	   r
   r,      s    	zProfile.trace_dispatch_lc       	      C   s`   |  j  \ } } } } } } | | k	 r= | r= |  j | |  S| | | | | | | f |  _  d S)Nr   )r    trace_dispatch_return)	r   r2   r-   rptritretrfnrframercurr	   r	   r
   trace_dispatch_exception   s
    z Profile.trace_dispatch_exceptionc             C   s  |  j  r\ | j |  j  d k	 r\ |  j  \ } } } } } } t | t j  s\ |  j | d  | j }	 |	 j |	 j |	 j	 f }
 | d d |
 | |  j  f |  _  |  j
 } |
 | k r | |
 \ } } } } } | | d | | | f | |
 <n d d d d i  f | |
 <d S)Nr   r   r   )r    f_back
isinstancer   
fake_framer7   f_codeco_filenameco_firstlinenoco_namer   )r   r2   r-   r8   r9   r:   r;   r<   r=   Zfcodefnr   ccnsttctcallersr	   r	   r
   trace_dispatch_call  s    		 zProfile.trace_dispatch_callc       
      C   s   d d |  j  f } | d d | | |  j f |  _ |  j } | | k r~ | | \ } } } } }	 | | d | | |	 f | | <n d d d d i  f | | <d S)Nr   r   r   )r"   r    r   )
r   r2   r-   rG   r   rH   rI   rJ   rK   rL   r	   r	   r
   trace_dispatch_c_call  s    	 zProfile.trace_dispatch_c_callc             C   s   | |  j  d k	 r* |  j |  j  d d  |  j  \ } } } } } } | | } | | } | \ }	 }
 } } } } |	 |
 | | | | | | f |  _  |  j } | | \ } } } } } | s | | } | d } | | k r | | d | | <n
 d | | <| | d | | | | f | | <d S)Nr   r   r   r?   r?   )r    r7   r   )r   r2   r-   r8   r9   r:   r;   r=   Zframe_totalZpptZpitZpetZpfnpframeZpcurr   rH   rI   rJ   rK   rL   r	   r	   r
   r7   #  s"    

#	


!zProfile.trace_dispatch_returncall	exceptionreturnr0   Zc_exceptionZc_returnc             C   s+   |  j  d r d  S| |  _ |  j |  d  S)Nr   )r    r!   r.   )r   r!   r	   r	   r
   set_cmdY  s     	zProfile.set_cmdc               @   s(   e  Z d  Z d d   Z d d   Z d S)zProfile.fake_codec             C   s(   | |  _  | |  _ | |  _ d |  _ d  S)Nr   )rD   co_linerF   rE   )r   r   linenamer	   r	   r
   r   _  s    			zProfile.fake_code.__init__c             C   s   t  |  j |  j |  j f  S)N)reprrD   rU   rF   )r   r	   r	   r
   __repr__e  s    zProfile.fake_code.__repr__N)r   r   r   r   rY   r	   r	   r	   r
   	fake_code^  s   rZ   c               @   s   e  Z d  Z d d   Z d S)zProfile.fake_framec             C   s   | |  _  | |  _ d  S)N)rC   r@   )r   codeZpriorr	   r	   r
   r   i  s    	zProfile.fake_frame.__init__N)r   r   r   r   r	   r	   r	   r
   rB   h  s   rB   c             C   sa   |  j  d d |  } |  j r. |  j d } n d  } |  j | |  } |  j d |  | d  d  S)NZprofiler   r   rP   r?   )rZ   r    rB   r1   )r   rW   r[   rO   r2   r	   r	   r
   r.   m  s    	zProfile.simulate_callc             C   se   |  j  } |   |  j } x5 |  j d rP |  j d |  |  j d |  d } q W|   | |  _ d  S)Nr   rR   r   r   rS   r?   )r&   r-   r    r1   )r   r&   r-   r	   r	   r
   simulate_cmd_completey  s    	
zProfile.simulate_cmd_completer   c             C   s2   d d  l  } | j |   j   j |  j   d  S)Nr   )pstatsZStatsZ
strip_dirsZ
sort_statsr   )r   r   r]   r	   r	   r
   r     s    zProfile.print_statsc          
   C   s:   t  | d  $ } |  j   t j |  j |  Wd  QRXd  S)Nwb)opencreate_statsmarshaldumpstats)r   filefr	   r	   r
   r     s    
zProfile.dump_statsc             C   s   |  j    |  j   d  S)N)r\   snapshot_stats)r   r	   r	   r
   r`     s    
zProfile.create_statsc       	      C   s   i  |  _  x{ |  j j   D]j \ } \ } } } } } | j   } d } x | j   D] } | | 7} qS W| | | | | f |  j  | <q Wd  S)Nr   )rc   r   itemscopyvalues)	r   funcrH   rI   rJ   rK   rL   ZncZcallcntr	   r	   r
   rf     s    	+zProfile.snapshot_statsc             C   s(   d d  l  } | j } |  j | | |  S)Nr   )__main____dict__r   )r   r!   rk   dictr	   r	   r
   r     s    	zProfile.runc             C   sF   |  j  |  t j |  j  z t | | |  Wd  t j d   X|  S)N)rT   sys
setprofiler(   exec)r   r!   r   r   r	   r	   r
   r     s    zProfile.runctxc             O   sI   |  j  t |   t j |  j  z | | |   SWd  t j d   Xd  S)N)rT   rX   rn   ro   r(   )r   rj   argskwr	   r	   r
   runcall  s
    zProfile.runcallc             C   sR   |  j  t k	 r t d   |  j } d |  _ z |  j | |  SWd  | |  _ Xd  S)Nz&Subclasses must override .calibrate().r   )	__class__r   r*   r#   _calibrate_inner)r   mverboseZ
saved_biasr	   r	   r
   	calibrate  s    		zProfile.calibratec             C   s  |  j  } d d   } | d d  } | |  |   } | |  |   } | | } | rg t d |  t   }	 |   } |	 j d t   t    |   } | | }
 | r t d |
  d } d } xU |	 j j   D]D \ \ } } } \ } } } } } | d k r | | 7} | | 7} q W| r<t d |  t d |  | | d k r\t d |   | | d | } | rt d |  | S)Nc             S   s!   x t  |   D] } d } q Wd  S)Nr   )range)nixr	   r	   r
   f1  s    z$Profile._calibrate_inner.<locals>.f1c             S   s%   x t  |   D] } | d  q Wd  S)Nd   )ry   )rv   r}   r{   r	   r	   r
   re     s    z#Profile._calibrate_inner.<locals>.fz elapsed time without profiling =zf(m)zelapsed time with profiling =g        re   r}   z!'CPU seconds' profiler reported =ztotal # calls =r   z internal error: total calls = %dg       @z+mean stopwatch overhead per profile event =)re   r}   )	r&   printr   r   r   r   r   rg   
ValueError)r   rv   rw   r&   r}   re   t0t1Zelapsed_noprofilepZelapsed_profileZtotal_callsZreported_timer   rV   funcnamerH   rI   rJ   rK   rL   Zmeanr	   r	   r
   ru     sB    	
	
	
			
1
zProfile._calibrate_innerrS   )r   r   r   r#   r   r+   r'   r6   r,   r>   rM   rN   r7   r1   rT   rZ   rB   r.   r\   r   r   r`   rf   r   r   rs   rx   ru   r	   r	   r	   r
   r   h   s<   '''


1c              C   sh  d }  t  d |   } d | _ | j d d d d d d	 d
 d  | j d d d d d d d
 d t j d d   s | j   t j d  | j   \ } } | t j d  d   <t |  d k rZ| d } t j	 j
 d t j	 j |   t | d   } t | j   | d  } Wd  QRXd | d d d d  d d  i } t | | d  | j | j  n
 | j   | S)Nz?profile.py [-o output_file_path] [-s sort] scriptfile [arg] ...usageFz-oz	--outfiledestoutfilehelpzSave stats to <outfile>defaultz-sz--sortr   z?Sort order when printing to stdout, based on pstats.Stats classr   r   r   rbrp   __file__r   rk   __package__
__cached__rS   )r   Zallow_interspersed_argsZ
add_optionrn   argvprint_usageexit
parse_argsr)   pathinsertosdirnamer_   compilereadr   r   r   )r   parseroptionsrq   Zprognamefpr[   Zglobsr	   r	   r
   main*  s2    	


r   rk   )rn   r   r$   ra   Zoptparser   __all__r   r   r   r   r   r   r	   r	   r	   r
   <module>   s   
'	 "