ó
    Û“,jh  ã                   ó‚  • S r SSKrSSKrSSKJr  Sr SSKrS rS r	\(       d   SSK7  S	 rS
 r	SSKJr   " S S\5      rS rSSKr " S S\R&                  5      r\S:X  a@  \R,                  " 5       R/                  \5      r\R2                  " SS9R5                  \5        gg! \
 a    Sr N‘f = f! \
 a    Sr NŒf = f)zR
Author(s): Matthew Loper

See LICENCE.txt for licensing and contact information.
é    N©ÚreduceTc                  óJ   • [         R                  " [         R                  5      $ ©N)ÚresourceÚ	getrusageÚRUSAGE_SELF© ó    Ú®C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\chumpy/optional_test_performance.pyÚabstract_ressource_timerr      s   € Ü×Òœh×2Ñ2Ó3Ð3r   c                 ón   • U R                   U R                  -   nUR                   UR                  -   nX2-
  $ r   )Úru_stimeÚru_utime)Úr1Úr2Ú_r1Ú_r2s       r   Úabstract_ressource_counterr      s.   € Ø
�+‰+˜Ÿ™Ñ
#€CØ
�+‰+˜Ÿ™Ñ
#€Cà‰9Ðr   F)Ú*c                  ój   • [        5       n [        R                  R                  [	        U 5      5        U $ r   )Úc_int64ÚwindllÚKernel32ÚQueryPerformanceCounterÚbyref)Úvals    r   r   r   $   s$   € Ü‹I€cÜ‡o�o×-Ñ-¬e°C«jÔ9Ø€jr   c                 óÊ   • [        5       n[        R                  R                  [	        U5      5        S[        UR                  U R                  -
  5      -  UR                  -  $ )zDReturns the elapsed time between r2 and r1 (r2 > r1) in millisecondséè  )r   r   r   ÚQueryPerformanceFrequencyr   ÚfloatÚvalue)r   r   r   s      r   r   r   (   sE   € ä‹I€cÜ‡o�o×/Ñ/´°c³
Ô;à”5˜Ÿ™ "§(¡(Ñ*Ó+Ñ+¨S¯Y©YÑ6Ð6r   é   )Úchc                   ó    • \ rS rSrS rS rSrg)ÚTimeré9   c                 ó"   • [        5       U l        g r   )r   r   ©Úselfs    r   Ú	__enter__ÚTimer.__enter__;   s   € Ü*Ó,ˆ�r   c                 ól   • [        5       U l        [        U R                  U R                  5      U l        g r   )r   r   r   r   Úelapsed)r*   Úexception_typeÚexception_valueÚ	tracebacks       r   Ú__exit__ÚTimer.__exit__>   s"   € Ü*Ó,ˆŒä1°$·'±'¸4¿7¹7ÓCˆ�r   )r.   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r+   r2   Ú__static_attributes__r
   r   r   r&   r&   9   s   † ò-õDr   r&   c                 óÔ   • / n[        U5       HB  nU b  U " 5         [        5       nU" 5         [        5       nUR                  [        XV5      5        MD     [        R
                  " U5      $ r   )Úranger   Úappendr   ÚnpÚmean)ÚsetupÚgoÚnÚtmsÚiÚtm0Útm1s          r   ÚtimerrE   I   sY   € Ø
€CÜ�1ŽXˆØÑÙŒGä&Ó(ˆñ 	ŒÜ&Ó(ˆà�
‰
Ô-¨cÓ7Ö8ñ ô" �7Š7�3‹<Ðr   c                   ó,   • \ rS rSrS rS rS rS rSrg)ÚTestPerformanceéa   c                 ó^  • [         R                  R                  S5        [        R                  " [         R                  R                  S5      R                  S5      5      U l        [        R                  " [         R                  R                  S5      R                  S5      5      U l        g )Nr   éd   ©é
   rL   i@B )r   r   )	r<   ÚrandomÚseedr$   ÚarrayÚrandnÚreshapeÚmtx_10Úmtx_1kr)   s    r   ÚsetUpÚTestPerformance.setUpc   sb   € Ü
�	‰	�‰�qÔÜ—h’hœrŸy™yŸ™¨sÓ3×;Ñ;¸GÓDÓEˆŒÜ—h’hœrŸy™yŸ™¨wÓ7×?Ñ?ÀÓLÓMˆ�r   c                 ód  ^
^^• 0 nS HŸ  n[         [        4 H…  n[        XT5      m[        U5       Vs/ s H  oeR                  R                  U5      PM     snmU[         L a&  [        U4S jT5      m
U
U4S jn[        S US5      nMq  UU4S jn[        S US5      n	M‡     WW	-  X4'   M¡     U$ s  snf )N)ÚaddÚsubtractÚmultiplyÚdivideÚpowerc                 ó   >• T" X5      $ r   r
   ©ÚxÚyÚfuncs     €r   Ú<lambda>Ú7TestPerformance.compute_binary_ratios.<locals>.<lambda>q   s	   ø€ ©T°!¬Yr   c                  óZ   >• T H  n U =R                   S-  sl         M     TR                  ng )Néÿÿÿÿ)r^   Úr)ÚvÚ_ÚfÚvecss     €€r   r?   Ú1TestPerformance.compute_binary_ratios.<locals>.gor   s#   ø€ Û!%˜AØŸCšC 2™IŸCñ "&àŸC™C™r   rL   c                  óB   >• T H  n U S-  n M
     [        U4S jT5      ng )Nrd   c                 ó   >• T" X5      $ r   r
   r]   s     €r   ra   ÚCTestPerformance.compute_binary_ratios.<locals>.go.<locals>.<lambda>|   s	   ø€ ±°a´r   r   )rf   rg   r`   ri   s     €€r   r?   rj   y   s#   ø€ Û!%˜AØ ™GšAñ "&ä"Ô#:¸DÓA™r   )r$   r<   Úgetattrr:   rM   Úrandr   rE   )r*   ÚvecsizeÚnumvecsÚratioÚfuncnameÚxprB   r?   Útm_chÚtm_nprh   r`   ri   s             @@@r   Úcompute_binary_ratiosÚ%TestPerformance.compute_binary_ratiosh   s§   ú€ àˆÛJˆHÜœ"“f�Ü˜rÓ,�Ü9>¸w¼ÓHº°AŸ	™	Ÿ™ wÖ/¹ÑH�àœ’8ÜÔ6¸Ó=�Aö ô
 " $¨¨BÓ/’EöBô
 " $¨¨BÓ/’Eñ% ð( $ e™mˆE‹Oñ+ Kð. ˆùò) Is   ²$B-c                 ó  • U R                  SSS9nSnU R                  US   SU-   5        U R                  US   SU-   5        U R                  US   SU-   5        U R                  US	   S
U-   5        U R                  US   SU-   5        g )Niˆ  rJ   )rp   rq   gš™™™™™¹?rW   é   rX   rY   rZ   é   r[   é   )rw   Ú
assertLess)r*   ÚratiosÚtols      r   Útest_binary_ratiosÚ"TestPerformance.test_binary_ratios„   s�   € Ø×+Ñ+°DÀ#Ð+ÐFˆØˆØ�‰˜˜u™ q¨¡uÔ-Ø�‰˜˜zÑ*¨A¨c©EÔ2Ø�‰˜˜zÑ*¨A¨c©EÔ2Ø�‰˜˜xÑ(¨!¨C©%Ô0Ø�‰˜˜w™¨¨3©Õ/r   c                 ó„  ^	^
^^• [         R                  " [        R                  R	                  S5      R                  S5      5      m	SSKJn  U" T	5      u  mm
mU	4S jnU
UU4S jnU	U
UU4S jn[        X#S5      n[        X$S5      nU	4S	 jn[        S USS
9nU R                  XX-  S5        U R                  Xh-  S5        g )NrJ   rK   r#   )Úsvdc                  ó*   >• T R                   * T l         g r   )r^   )Úmtxs   €r   r>   Ú'TestPerformance.test_svd.<locals>.setup–   s   ø€ Ø—U‘U�FˆC�Er   c                  óN   >• TR                   n TR                   n TR                   n g r   )re   )rg   ÚsÚurf   s    €€€r   Úgo_rÚ&TestPerformance.test_svd.<locals>.go_r™   s   ø€ Ø—‘ˆAØ—‘ˆAØ—‘‰Ar   c                  ól   >• TR                  T5      n TR                  T5      n TR                  T5      n g r   )Údr_wrt)rg   r…   rˆ   r‰   rf   s    €€€€r   Úgo_drÚ'TestPerformance.test_svd.<locals>.go_drž   s*   ø€ Ø—‘˜“ˆAØ—‘˜“ˆAØ—‘˜“‰Ar   é   c                  ó^   >• [         R                  R                  TR                  5      u  png r   )r<   Úlinalgrƒ   r^   )r‰   rˆ   rf   r…   s      €r   r?   Ú$TestPerformance.test_svd.<locals>.go§   s   ø€ Ü—I‘I—M‘M #§%¡%Ó(‰EˆA‘r   )r>   r?   r@   gffffff
@iŒ
  )
r$   rO   r<   rM   rP   rQ   r’   rƒ   rE   r}   )r*   rƒ   r>   rŠ   rŽ   Úcht_rÚcht_drr?   Únptr…   rˆ   r‰   rf   s            @@@@r   Útest_svdÚTestPerformance.test_svd�   s    û€ Ü�hŠh”r—y‘y—‘ sÓ+×3Ñ3°GÓ<Ó=ˆõ 	 Ù�c“(‰ˆˆ1ˆaõ	÷	÷
	ð 	ô
 �e 2Ó&ˆÜ�u QÓ'ˆõ	)ä˜D r¨rÑ2ˆð
 	�‰˜™ SÔ)Ø�‰˜™ dÕ+r   )rR   rS   N)	r4   r5   r6   r7   rT   rw   r€   r—   r8   r
   r   r   rG   rG   a   s   † òNò
ò80õ ,r   rG   Ú__main__r|   )Ú	verbosity)Ú__doc__ÚunittestÚnumpyr<   Ú	functoolsr   Úhas_ressourcesr   r   r   ÚImportErrorÚctypesÚhas_win32apiÚ r$   Úobjectr&   rE   ÚtimeitÚTestCaserG   r4   Ú
TestLoaderÚloadTestsFromTestCaseÚsuiteÚTextTestRunnerÚrunr
   r   r   Ú<module>r¬      sç   ðñó Û Ý ð €ðÛò4òö ðÜòò7õ ôDˆFô Dò ó. ôN,�h×'Ñ'ô N,ðh ˆzÓØ×ÒÓ!×7Ñ7¸ÓH€EØ×Ò aÑ(×,Ñ,¨UÕ3ð øðy ó Ø€.Ùðûð, 
ó Ø‚Lðús"   ”
B% ¦B3 Â%B0Â/B0Â3B>Â=B>