Ë
    °Œj¼  ã                   ój   — d Z ddlZddlZddlZddlmZ ddlZddlm	Z	 dZ
dZi Zdd„Z G d	„ d
e«      Zy)z;
Simple perf tests for aiosqlite and the asyncio run loop.
é    N)ÚIsolatedAsyncioTestCaseé   )Úsetup_loggerz:memory:g       @c                 ó6   ‡ ‡— ‰xs ‰ j                   Šˆ ˆfd„}|S )ab  
    Decorator for perf testing a block of async code.

    Expects the wrapped function to return an async generator.
    The generator should do setup, then yield when ready to start perf testing.
    The decorator will then pump the generator repeatedly until the target
    time has been reached, then close the generator and print perf results.
    c               Ÿ   óà  •K  —  ‰| i |¤Ž}|j                  d «      ƒ d {  –—†  d}t        j                  «       }	 |dz  }t        j                  «       |z
  t        k  }	 |r|j                  |«      ƒ d {  –—†  n|j                  «       ƒ d {  –—†  n	 Œ[t        j                  «       |z
  }||ft        ‰	<   y 7 Œ™7 ŒE7 Œ.# t        $ r Y Œ4t
        $ r}t        d|› �«       Y d }~y d }~ww xY w­w)Nr   r   zexception occurred: )ÚasendÚtimeÚTARGETÚacloseÚStopAsyncIterationÚ	ExceptionÚprintÚRESULTS)
ÚargsÚkwargsÚgenÚcountÚbeforeÚvalueÚeÚdurationÚfnÚnames
           €€ú^/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/aiosqlite/tests/perf.pyÚwrapperztimed.<locals>.wrapper!   sì   øè ø€ Ù�$Ð!˜&Ñ!ˆà�i‰i˜‹o×ÐØˆÜ—‘“ˆàØ�Q‰JˆEÜ—I‘I“K &Ñ(¬6Ñ1ˆEðÙØŸ)™) EÓ*×*Ñ*àŸ*™*›,×&Ð&Øð +ð ô" —9‘9“; Ñ'ˆà Ð)Œ�Šð/ 	øð +øà&ùô &ò Ùäò ÜÐ,¨Q¨CÐ0Ô1Üûðüsi   ƒC. B:¡>C.Á C  Á6B<Á7C  ÂB>ÂC  Â'C.Â<C  Â>C  Ã 	C+Ã	C.ÃC+ÃC&Ã!C.Ã&C+Ã+C.)Ú__name__)r   r   r   s   `` r   Útimedr      s   ù€ ð Ò�2—;‘;€Dõ*ð8 €Nó    c                   ó²   — e Zd Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed„ «       Zed	„ «       Zed
„ «       Zd„ Zy)ÚPerfTestc                 ó@   — t        dt        d›d�«       t        «        y )Nz Running perf tests for at least z.1fz	s each...)r   r
   r   )Úclss    r   Ú
setUpClasszPerfTest.setUpClassA   s   € äÐ0´¸°¸IÐFÔGÜ�r   c                 óÎ   — t        ddd›ddd›�«       t        t        «      D ]@  }t        |   \  }}||z  }|j                  dd«      }t        |d›d	|d
›d|d›d|d›d�«       ŒB y )NÚ
z	Perf Testz<25z Iterations  Duration  ÚRatez>11Útest_Ú Ú z>10z  z>7.1fzs  z>9.1fz/s)r   Úsortedr   Úreplace)r"   r   r   r   Úrates        r   ÚtearDownClasszPerfTest.tearDownClassF   s|   € ä��;˜sÐ#Ð#:¸6À#¸,ÐGÔHÜœ7–OˆDÜ% d™m‰OˆE�8Ø˜8Ñ#ˆDØ—<‘< ¨Ó,ˆDÜ�T˜#�J˜a  c˜{¨"¨X°eÐ,<¸CÀÀU¸|È2ÐNÕOñ	 $r   c                ó°   K  — 	 d ­–— t        j                  t        «      4 ƒd {  –—†  	 d d d «      ƒd {  –—†  Œ97 Œ7 Œ# 1 ƒd {  –—†7  sw Y   ŒxY w­w©N)Ú	aiosqliteÚconnectÚTEST_DB)Úselfs    r   Útest_connection_memoryzPerfTest.test_connection_memoryO   s>   è ø€ àÜÜ ×(Ñ(¬×1Õ1Ø÷ 2×1ð à1øÐ1ø×1×1Ñ1üs>   ‚$A¦=§AªA¬A·?¸A¿AÁAÁA
ÁAÁAc                óT  K  — t        j                  d¬«      5 }|j                  }|j                  «        t	        j
                  |«      4 ƒd {  –—† }|j                  d«      ƒ d {  –—†  |j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  	 d ­–— t	        j
                  |«      4 ƒd {  –—†  	 d d d «      ƒd {  –—†  Œ57 Œ”7 Œ}7 Œf7 ŒP7 ŒB# 1 ƒd {  –—†7  sw Y   ŒRxY w7 Œ57 Œ&# 1 ƒd {  –—†7  sw Y   Œ6xY w# 1 sw Y   y xY w­w)NF)Údeleteú8create table perf (i integer primary key asc, k integer)ú$insert into perf (k) values (2), (3))ÚtempfileÚNamedTemporaryFiler   Úcloser0   r1   ÚexecuteÚcommit)r3   ÚtfÚpathÚdbs       r   Útest_connection_filezPerfTest.test_connection_fileV   sì   è ø€ ä×(Ñ(°Õ6¸"Ø—7‘7ˆDØ�H‰HŒJä ×(Ñ(¨×.Ô.°"Ø—j‘jØNó÷ ð ð —j‘jÐ!GÓH×HÐHØ—i‘i“k×!Ð!÷ /×.ð ÜÜ$×,Ñ,¨T×2Õ2Ø÷ 3×2ð ð /øðøð IøØ!øð /ø×.×.Ñ.úð 3øÐ2ø×2×2Ñ2ú÷ 7Ð6üsÐ   ‚D(™6DÁC$ÁDÁC.Á(C&Á)C.ÂC(ÂC.ÂC*ÂC.ÂDÂ)C,Â*#DÃDÃDÃDÃDÃDÃDÃ&C.Ã(C.Ã*C.Ã,DÃ.D 	Ã4C7Ã5D 	Ã<DÄDÄD	ÄDÄD	ÄDÄD%Ä!D(c                óä  K  — t        j                  t        «      4 ƒd {  –—† }|j                  d«      ƒ d {  –—†  |j                  d«      ƒ d {  –—†  |j	                  «       ƒ d {  –—†  	 d ­–— |j                  d«      4 ƒd {  –—† }|j                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  ŒH7 Œ—7 Œ€7 Œi7 ŒS7 Œ57 Œ7 Œ# 1 ƒd {  –—†7  sw Y   Œ!xY w# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr7   r8   úselect last_insert_rowid()©r0   r1   r2   r<   r=   Úfetchone©r3   r@   Úcursors      r   Útest_atomicszPerfTest.test_atomicsh   s½   è ø€ ä×$Ñ$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXØ—*‘*ÐCÓD×DÐDØ—)‘)“+×ÐàÜØŸ:™:Ð&B×CÔCÀvØ Ÿ/™/Ó+×+Ð+÷ D×Cð ð .øØXøØDøØøð DøØ+øð Dø×C×CÑCú÷ .×-Ñ-üsÀ   ‚C0 B8¡C0¤C¹B:ºCÁB<ÁCÁ*B>Á+CÂ
C ÂCÂCÂ"CÂ#CÂ'CÂ2CÂ3CÂ8C0Â:CÂ<CÂ>CÃ CÃCÃCÃC	ÃCÃC	ÃCÃC-Ã!C$Ã"C-Ã)C0c                ó^  K  — t        j                  t        «      4 ƒd {  –—† }|j                  d«      ƒ d {  –—†  |j	                  «       ƒ d {  –—†  	 d ­–— |j                  d«      ƒ d {  –—†  |j	                  «       ƒ d {  –—†  Œ77 Œm7 ŒV7 Œ@7 Œ#7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr7   z)insert into perf (k) values (1), (2), (3))r0   r1   r2   r<   r=   ©r3   r@   s     r   Útest_insertszPerfTest.test_insertst   sŒ   è ø€ ä×$Ñ$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXØ—)‘)“+×ÐàÜØ—j‘jÐ!LÓM×MÐMØ—i‘i“k×!Ð!ð ð	 .øØXøØøð NøØ!ø÷ .×-Ñ-üóx   ‚B- B¡B-¤B¹BºBÁBÁBÁ0BÁ1BÂBÂ	BÂB-ÂBÂBÂBÂBÂB*ÂB!ÂB*Â&B-c                óÈ  K  — t        j                  t        «      4 ƒd {  –—† }|j                  d«      ƒ d {  –—†  |j	                  «       ƒ d {  –—†  	 d ­–— |j                  d«      ƒ d {  –—† }|j                  d«      ƒ d {  –—†  |j                  «       ƒ d {  –—†  |j	                  «       ƒ d {  –—†  Œh7 Œž7 Œ‡7 Œq7 ŒT7 Œ=7 Œ'7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr7   úinsert into perf (k) values (1)rC   rD   rF   s      r   Útest_insert_idszPerfTest.test_insert_ids   s¶   è ø€ ä×$Ñ$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXØ—)‘)“+×ÐàÜØ!Ÿz™zÐ*KÓL×L�Ø—n‘nÐ%AÓB×BÐBØ—o‘oÓ'×'Ð'Ø—i‘i“k×!Ð!ð ð	 .øØXøØøð MøØBøØ'øØ!ø÷ .×-Ñ-üsœ   ‚C" B?¡C"¤C¹CºCÁCÁCÁ0CÁ1CÂ	CÂ
CÂ!C	Â"CÂ9CÂ:CÂ?C"ÃCÃCÃCÃCÃ	CÃCÃCÃCÃCÃC"c                ó^  K  — t        j                  t        «      4 ƒd {  –—† }|j                  d«      ƒ d {  –—†  |j	                  «       ƒ d {  –—†  	 d ­–— |j                  d«      ƒ d {  –—†  |j	                  «       ƒ d {  –—†  Œ77 Œm7 ŒV7 Œ@7 Œ#7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr7   rN   )r0   r1   r2   r<   r=   Úexecute_insertrJ   s     r   Útest_insert_macro_idszPerfTest.test_insert_macro_idsŒ   sŽ   è ø€ ä×$Ñ$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXØ—)‘)“+×ÐàÜØ×'Ñ'Ð(IÓJ×JÐJØ—i‘i“k×!Ð!ð ð	 .øØXøØøð KøØ!ø÷ .×-Ñ-ürL   c                óØ  K  — t        j                  t        «      4 ƒd {  –—† }|j                  d«      ƒ d {  –—†  t	        d«      D ]  }|j                  d|fz  «      ƒ d {  –—†  Œ! |j                  «       ƒ d {  –—†  	 d ­–— |j                  d«      ƒ d {  –—† }t        |j                  «       ƒ d {  –—† «      dk(  sJ ‚ŒE7 Œ¨7 Œ‘7 Œh7 ŒP7 Œ37 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w©Nr7   éd   z insert into perf (k) values (%d)zselect i, k from perf)r0   r1   r2   r<   Úranger=   ÚlenÚfetchall)r3   r@   ÚirG   s       r   Útest_selectzPerfTest.test_select—   sÅ   è ø€ ä×$Ñ$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXÜ˜3–Z�Ø—j‘jÐ!CÀqÀdÑ!JÓK×KÑKð  à—)‘)“+×ÐàÜØ!Ÿz™zÐ*AÓB×B�Ü §¡Ó!2×2Ó3°sÒ:Ð:Ð:ð ð .øØXøàKøØøð CøØ2ø÷ .×-Ñ-üsŠ   ‚C* C	¡C*¤C¹Cº*CÁ$CÁ%CÁ>CÁ?CÂCÂCÂ:C
Â;CÃ	C*ÃCÃCÃCÃCÃCÃC'ÃCÃC'Ã#C*c                ó¤  K  — t        j                  t        «      4 ƒd {  –—† }|j                  d«      ƒ d {  –—†  t	        d«      D ]  }|j                  d|fz  «      ƒ d {  –—†  Œ! |j                  «       ƒ d {  –—†  	 d ­–— t        |j                  d«      ƒ d {  –—† «      dk(  sJ ‚Œ-7 Œ�7 Œy7 ŒP7 Œ87 Œ# 1 ƒd {  –—†7  sw Y   y xY w­wrT   )r0   r1   r2   r<   rV   r=   rW   Úexecute_fetchall)r3   r@   rY   s      r   Útest_select_macrozPerfTest.test_select_macro¤   sµ   è ø€ ä×$Ñ$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXÜ˜3–Z�Ø—j‘jÐ!CÀqÀdÑ!JÓK×KÑKð  à—)‘)“+×ÐàÜÜ ×!4Ñ!4Ð5LÓ!M×MÓNÐRUÒUÐUÐUð ð .øØXøàKøØøð Nø÷ .×-Ñ-üsx   ‚C B1¡C¤B;¹B3º*B;Á$B5Á%B;Á>B7Á?#B;Â"B9
Â#B;Â1CÂ3B;Â5B;Â7B;Â9B;Â;CÃCÃCÃ	Cc              ƒ   óx  ‡K  — t        j                  t        «      4 ƒd {  –—† Š‰j                  d«      ƒ d {  –—†  t	        d«      D ]f  }|dz  }‰j                  dg t	        ||dz   «      D �cg c]  }|t        j                  f‘Œ c}¢«      ƒ d {  –—†  ‰j                  «       ƒ d {  –—†  Œh dt        fˆfd„}t	        dd«      D �cg c]  }d	|z  ‘Œ	 c}D ]  } t        |d
|› �«      |«      ƒ d {  –—†  Œ! d d d «      ƒd {  –—†  y 7 Œí7 ŒÖc c}w 7 Œƒ7 Œmc c}w 7 Œ)7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nz]create table ic_perf (i integer primary key asc, k integer, a integer, b integer, c char(16))é€   i   z3insert into ic_perf (k, a, b, c) values(?, 1, 2, ?)Ú
chunk_sizec                óÌ   •K  — 	 ‰j                  d«      4 ƒd {  –—† }| |_        |2 3 d {  –—† }d ­–— Œ7 Œ7 Œ6 d d d «      ƒd {  –—†7   n# 1 ƒd {  –—†7  sw Y   nxY wŒ_­w)NzSELECT * FROM ic_perf)r<   Úiter_chunk_size)r`   rG   Ú_r@   s      €r   Ú	test_perfz5PerfTest.test_iterable_cursor_perf.<locals>.test_perfÃ   sX   øè ø€ ØØ!Ÿz™zÐ*A×BÔBÀfØ1;˜Ô.Ù'-÷ " !Ý!ð  Cøð"ø v÷  C×B×B×BÓBúð ùs[   ƒA$š7›A$ž
A¨;¬9­;°A·A$¹;»A¼A$ÁA
ÁA$ÁA ÁAÁA ÁA$é   é   é   ziterable_cursor @ )r0   r1   r2   r<   rV   ÚexecutemanyÚstringÚascii_lowercaser=   Úintr   )r3   ÚbatchÚr_startrY   rd   r`   r@   s         @r   Útest_iterable_cursor_perfz"PerfTest.test_iterable_cursor_perf°   s?  øè ø€ Ü×$Ñ$¤W×-Ô-°Ø—*‘*ðZó÷ ð ô ˜sž�Ø $™,�Ø—n‘nØIðô &+¨7°G¸d±NÔ%Cóá%C ð ¤× 6Ñ 6Ò7Ø%Cñðó÷ ð ð —i‘i“k×!Ñ!ð $ð"¬Cõ "ô .3°1°b¬\Ó:©\¨˜q !›t¨\Ô:�
ØI”e˜IÐ);¸J¸<Ð'HÓIÈ*ÓU×UÑUð ;÷3 .×-Ñ-øðúòðøð "úò ;ØUøð5 .ø×-×-Ñ-üs¢   ƒD:¡D¢D:¥D%ºD»5D%Á0DÂ	D%ÂDÂD%Â,DÂ- D%ÃDÃD%Ã7D!Ã8D%Ã>D:Ä	D#Ä
D:ÄD%ÄD%ÄD%ÄD%Ä#D:Ä%D7Ä+D.Ä,D7Ä3D:N)r   Ú
__module__Ú__qualname__Úclassmethodr#   r-   r   r4   rA   rH   rK   rO   rR   rZ   r]   rn   © r   r   r    r    @   sÒ   „ Øñó ðð ñPó ðPð ñó ðð ñó ðð" ñ	,ó ð	,ð ñ"ó ð"ð ñ
"ó ð
"ð ñ"ó ð"ð ñ
;ó ð
;ð ñ	Vó ð	VóVr   r    r/   )Ú__doc__ri   r9   r	   Úunittestr   ÚTestCaser0   Úsmoker   r2   r
   r   r   r    rr   r   r   Ú<module>rw      sC   ðñó Û Û å 8ã Ý à
€Ø	€Ø
€ó(ôVKVˆxõ KVr   