o ?OgpY@sx ddlZddlZddlZddlZgdZGdddZdddZddd ZGd d d Zd d Z e dkr:e dSdS)N)runrunctxProfilec@s.eZdZ ddZddZddZddZd S) _UtilscCs ||_dSN)profiler)selfrr ./opt/alt/python310/lib64/python3.10/profile.py__init__0 z_Utils.__init__c Csd|}z%z||Wn tyYn wW||||dSW||||dS||||wr)rr SystemExit_show)r statementfilenamesortprofr r r r3s "z _Utils.runc Csh|}z'z ||||Wn tyYn wW||||dSW||||dS||||wr)rrr r)rrglobalslocalsrrrr r r r<s "z _Utils.runctxcCs$|dur ||dS||dSr) dump_stats print_stats)rrrrr r r rEsz _Utils._showN)__name__ __module__ __qualname__r rrrr r r r r*s  rcCs tt|||Sr)rrr)rrrr r r rQs rcCs tt|||||Sr)rrr)rrrrrr r r r^src@seZdZ dZd3ddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ e e e e e e dZ ddZGdddZGdddZddZddZd4d!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd5d/d0Zd1d2ZdS)6rrNcCsi|_d|_d|_d|_|dur|j}||_|s$tj|_|_|j |_ n5||_|}zt |}Wnt yA||_|j |_ Ynw|dkrK|j |_ n|j|_ |tfdd}||_||_|ddS)NcSs ||Srr )timersumr r r get_time_timerr z(Profile.__init__..get_time_timerr)timingscurcmd c_func_namebiastime process_timerget_timetrace_dispatch_i dispatcherlen TypeErrortrace_dispatchtrace_dispatch_lrt simulate_call)rrr$r.Zlengthrr r r r s2      zProfile.__init__cCs|j}|}|d|d|j|j}|dkr|j|_|j||||r3|}|d|d|_dS|}|d|d||_dS)Nrc_callrr.r$rr#dispatch)rframeeventargrr.rr r r r,szProfile.trace_dispatchcCV|j}||j|j}|dkr|j|_|j||||r#||_dS|||_dSNr1r2rr4r5r6rr.r r r r( zProfile.trace_dispatch_icCsb|j}|d|j|j}|dkr|j|_|j||||r'|d|_dS|d||_dS)NgN@r1r2r:r r r trace_dispatch_macszProfile.trace_dispatch_maccCr8r9)r'r.r$rr#r3)rr4r5r6r'r.r r r r-r;zProfile.trace_dispatch_lc CsD|j\}}}}}}||ur|r|||S|||||||f|_dSNr0)r!trace_dispatch_return) rr4r.rptritretrfnrframercurr r r trace_dispatch_exceptions   z Profile.trace_dispatch_exceptioncCs|jr |j|jdur |j\}}}}}}t|tjs ||d|j} | j| j| j f} |dd| ||jf|_|j } | | vrR| | \} } }}}| | d|||f| | <dSddddif| | <dSNrr0) r!f_back isinstancer fake_framer>f_code co_filenameco_firstlinenoco_namer )rr4r.r?r@rArBrCrDZfcodefnr ccnsttctcallersr r r trace_dispatch_calls  zProfile.trace_dispatch_callc Cspdd|jf}|dd|||jf|_|j}||vr-||\}}}}} ||d||| f||<dSddddif||<dS)Nrrr0)r#r!r ) rr4r.rOr rPrQrRrSrTr r r trace_dispatch_c_calls zProfile.trace_dispatch_c_callcCs||jdur||jdd|j\}}}}}}||}||}|\} } } } } }| | || || | |f|_|j}||\}}}}}|sL||}|d}| |vrY|| d|| <nd|| <||d||||f||<dSrF)r!r>r )rr4r.r?r@rArBrDZ frame_totalZpptZpitZpetZpfnpframeZpcurr rPrQrRrSrTr r r r>"s"zProfile.trace_dispatch_return)callZ exceptionreturnr1Z c_exceptionZc_returncCs"|jdrdS||_||dSNr)r!r"r/)rr"r r r set_cmdXszProfile.set_cmdc@seZdZddZddZdS)zProfile.fake_codecCs||_||_||_d|_dSNr)rLco_linerNrM)rrlinenamer r r r ^s zProfile.fake_code.__init__cCst|j|j|jfSr)reprrLr]rNrr r r __repr__dszProfile.fake_code.__repr__N)rrrr rbr r r r fake_code]s rcc@seZdZddZdS)zProfile.fake_framecCs||_||_dSr)rKrH)rcodeZpriorr r r r hs zProfile.fake_frame.__init__N)rrrr r r r r rJgs rJcCsF|dd|}|jr|jd}nd}|||}|jd||ddS)NZprofilerrGrX)rcr!rJr3)rr_rdrWr4r r r r/ls   zProfile.simulate_callcCsR|j}||j}|jdr!|jd||jd|d}|jds|||_dS)NrrYrGr)r'r.r!r3)rr'r.r r r simulate_cmd_completexs   zProfile.simulate_cmd_completercCs$ddl}|||dSr\)pstatsZStatsZ strip_dirsZ sort_statsr)rrrfr r r rs zProfile.print_statscCsFt|d}|t|j|WddS1swYdS)Nwb)open create_statsmarshaldumpstats)rfilefr r r rs "zProfile.dump_statscCs||dSr)resnapshot_statsrar r r ris zProfile.create_statsc Cs^i|_|jD]$\}\}}}}}|}d}|D]}||7}q|||||f|j|<qdSr\)rlr itemscopyvalues) rfuncrPrQrRrSrTZncZcallcntr r r ros  zProfile.snapshot_statscCsddl}|j}||||Sr\)__main____dict__r)rr"rtdictr r r rsz Profile.runc Cs@||t|jzt|||Wtd|Stdwr)r[sys setprofiler)exec)rr"rrr r r rs    zProfile.runctxc OsB|t|t|jz ||i|WtdStdwr)r[r`rwrxr))rrsargskwr r r runcalls  zProfile.runcallcCs<|jtur td|j}d|_z |||W||_S||_w)Nz&Subclasses must override .calibrate().r) __class__rr+r$_calibrate_inner)rmverboseZ saved_biasr r r calibrates  zProfile.calibratecCs|j}dd}|fdd}|||}|||}||}|r&td|t} |}| dtt|}||} |rCtd| d} d} | jD]\\} }}\}}}}}|d vrd| |7} | |7} qL|rqtd | td | | |d kr}td | | |d| }|rtd||S)NcSst|D]}d}qdSr=range)nixr r r f1s z$Profile._calibrate_inner..f1cSst|D]}|dqdS)Ndr)rrrr r r rns  z#Profile._calibrate_inner..fz elapsed time without profiling =zf(m)zelapsed time with profiling =g)rnrz!'CPU seconds' profiler reported =ztotal # calls =r0z internal error: total calls = %dg@z+mean stopwatch overhead per profile event =) r'printrrrrr rp ValueError)rrrr'rrnZt0t1Zelapsed_noprofilepZelapsed_profileZ total_callsZ reported_timerr^funcnamerPrQrRrSrTZmeanr r r r~sD        zProfile._calibrate_inner)NN)r)r)rrrr$r r,r(r<r-rErUrVr>r3r[rcrJr/rerrrirorrr|rr~r r r r rgsB& ' '    1 rc Csddl}ddlm}d}||d}d|_|jdddd dd |jd d d ddd|jdddddd tjddsB|td| \}}|tjdd<|j dur\|j |j |_ t |dkr|jrtddl}d}|j|dd}n3|d} tj d|j | t| } t| | d}Wdn1swY| dddd}z t||d|j |jW|Sty} zdt_t| jWYd} ~ |Sd} ~ ww||S)Nr) OptionParserzMprofile.py [-o output_file_path] [-s sort] [-m module | scriptfile] [arg] ...)usageFz-oz --outfileoutfilezSave stats to )desthelpdefaultz-mmodule store_truezProfile a library module.)ractionrrz-sz--sortrz?Sort order when printing to stdout, based on pstats.Stats classrr0rz(run_module(modname, run_name='__main__')) run_modulemodnameryrt)__file__r __package__ __cached__)osZoptparserZallow_interspersed_argsZ add_optionrwargvZ print_usageexit parse_argsrpathabspathr*rrunpyrinsertdirnameio open_codecompilereadrrBrokenPipeErrorstdouterrno) rrrparserZoptionsrzrrdZglobsZprognamefpexcr r r main)sd          rrtrZ) rrwr%rj__all__rrrrrrr r r r s" '  E9