§
    „Øj7  ã                  ó   — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z
  ej        d¦  «        Z G d	„ d
ej        ¦  «        Zedk    r*ddlZ eej        ¦  «        dk    r ej        e¦  «         dS dS dS )zÛ
This module defines a number of performance test.
 Results for these performances are stored and dated,
 and used to track long-term performance changes.

This file is not run with the standard test battery presently.
é    )ÚannotationsN)Úcommon)Úcorpus)Úenvironment)ÚGeneralObjectExporterztest.testPerformancec                  ó€   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestc                ó`  — ddl m} ddl m} |                     ¦   «         }t	          d¦  «        D ]+}|                     ¦   «         }|                     |¦  «         Œ,t	          d¦  «        D ]+}|                     ¦   «         }|                     |¦  «         Œ,t	          d¦  «        D ]}|D ]}ŒŒdS )z.
        Stream iteration by iterator
        r   ©Únote©Ústreaméè  éô  éd   N)Úmusic21r   r   ÚStreamÚrangeÚNoteÚappendÚRest©Úselfr   r   ÚsÚiÚnÚrÚjs           ú‘/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/music21/test/testPerformance.pyÚrunStreamIterationByIteratorz!Test.runStreamIterationByIterator"   sÑ   € ð 	!Ð Ð Ð Ð Ð Ø"Ð"Ð"Ð"Ð"Ð"à�MŠM‰OŒOˆÝ�t‘”ð 	ð 	ˆAØ—	’	‘”ˆAØ�HŠH�Q‰KŒKˆKˆKÝ�s‘”ð 	ð 	ˆAØ—	’	‘”ˆAØ�HŠH�Q‰KŒKˆKˆKå�s‘”ð 	ð 	ˆAØð ð �Øðð	ð 	ó    c                ój  — ddl m} ddl m} |                     ¦   «         }t	          d¦  «        D ]+}|                     ¦   «         }|                     |¦  «         Œ,t	          d¦  «        D ]+}|                     ¦   «         }|                     |¦  «         Œ,t	          d¦  «        D ]}|j        D ]}ŒŒdS )z6
        Stream iteration by .elements access
        r   r   r   r   r   r   N)	r   r   r   r   r   r   r   r   Úelementsr   s           r   ÚrunStreamIterationByElementsz!Test.runStreamIterationByElements5   sÓ   € ð 	!Ð Ð Ð Ð Ð Ø"Ð"Ð"Ð"Ð"Ð"à�MŠM‰OŒOˆÝ�t‘”ð 	ð 	ˆAØ—	’	‘”ˆAØ�HŠH�Q‰KŒKˆKˆKÝ�s‘”ð 	ð 	ˆAØ—	’	‘”ˆAØ�HŠH�Q‰KŒKˆKˆKå�s‘”ð 	ð 	ˆAØ”Zð ð �Øðð	ð 	r!   c                ó  — ddl m} ddl m} |                     ¦   «         }t	          d¦  «        D ]+}|                     ¦   «         }|                     |¦  «         Œ,t	          d¦  «        D ]+}|                     ¦   «         }|                     |¦  «         Œ,t	          d¦  «        D ]X}|                     ¦   «          	                    |j        |j        g¦  «        }|  
                    t          |¦  «        d¦  «         ŒYdS )	z0
        Getting elements by class type
        r   r   r   r   r   é   éÜ  N©r   r   r   r   r   r   r   r   ÚrecurseÚgetElementsByClassÚassertEqualÚlen©r   r   r   r   r   r   r   Úposts           r   ÚrunGetElementsByClassTypezTest.runGetElementsByClassTypeH   sÿ   € ð 	!Ð Ð Ð Ð Ð Ø"Ð"Ð"Ð"Ð"Ð"ð �MŠM‰OŒOˆÝ�t‘”ð 	ð 	ˆAØ—	’	‘”ˆAØ�HŠH�Q‰KŒKˆKˆKÝ�s‘”ð 	ð 	ˆAØ—	’	‘”ˆAØ�HŠH�Q‰KŒKˆKˆKå�q‘”ð 	.ð 	.ˆAØ—9’9‘;”;×1Ò1°4´9¸d¼iÐ2HÑIÔIˆDØ×Ò�S ™YœY¨Ñ-Ô-Ð-Ð-ð	.ð 	.r!   c                óî  — ddl m} ddl m} |                     ¦   «         }t	          d¦  «        D ]+}|                     ¦   «         }|                     |¦  «         Œ,t	          d¦  «        D ]+}|                     ¦   «         }|                     |¦  «         Œ,t	          d¦  «        D ]N}|                     ¦   «          	                    ddg¦  «        }|  
                    t          |¦  «        d	¦  «         ŒOd
S )z,
        Getting elements by string
        r   r   r   r   r   r&   r   r   r'   Nr(   r-   s           r   ÚrunGetElementsByClassStringz Test.runGetElementsByClassString\   sû   € ð 	!Ð Ð Ð Ð Ð Ø"Ð"Ð"Ð"Ð"Ð"ð �MŠM‰OŒOˆÝ�t‘”ð 	ð 	ˆAØ—	’	‘”ˆAØ�HŠH�Q‰KŒKˆKˆKÝ�s‘”ð 	ð 	ˆAØ—	’	‘”ˆAØ�HŠH�Q‰KŒKˆKˆKå�q‘”ð 	.ð 	.ˆAØ—9’9‘;”;×1Ò1°6¸6Ð2BÑCÔCˆDØ×Ò�S ™YœY¨Ñ-Ô-Ð-Ð-ð	.ð 	.r!   c                ó2   — t          j        dd¬¦  «        }dS )ú=
        Loading file: beethoven/opus59no2/movement3
        úbeethoven/opus59no2/movement3T©ÚforceSourceN©r   Úparse©r   Újunks     r   ÚrunParseBeethovenzTest.runParseBeethovenp   s   € õ Œ|Ð;ÈÐNÑNÔNˆˆˆr!   c                óˆ   — t          j        dd¬¦  «        }|j        D ]#}t          ¦   «                              |¦  «        }Œ$dS )zi
        Loading file and rendering musicxml output for each part: beethoven/opus59no2/movement3
        r4   Tr5   N)r   r8   ÚpartsÚGEX)r   ÚxÚpr:   s       r   ÚrunMusicxmlOutPartsBeethovenz!Test.runMusicxmlOutPartsBeethovenv   sI   € õ ŒLÐ8ÀdÐKÑKÔKˆà”ð 	"ð 	"ˆAÝ‘5”5—;’;˜q‘>”>ˆDˆDð	"ð 	"r!   c                ót   — t          j        dd¬¦  «        }t          ¦   «                              |¦  «        }dS )zm
        Loading file and rendering musicxml output of complete score: beethoven/opus59no2/movement3
        r4   Tr5   N©r   r8   r>   ©r   r?   r:   s      r   ÚrunMusicxmlOutScoreBeethovenz!Test.runMusicxmlOutScoreBeethoven   s0   € õ ŒLÐ8ÀdÐKÑKÔKˆå‰uŒu�{Š{˜1‰~Œ~ˆˆˆr!   c                ó2   — t          j        dd¬¦  «        }dS )z9
        Loading file: haydn/opus74no1/movement3
        zhaydn/opus74no1/movement3Tr5   Nr7   r9   s     r   ÚrunParseHaydnzTest.runParseHaydn‡   s   € õ Œ|Ð7ÀTÐJÑJÔJˆˆˆr!   c                ó2   — t          j        dd¬¦  «        }dS )zC
        Loading file: schumann_robert/opus41no1/movement2
        z#schumann_robert/opus41no1/movement2Tr5   Nr7   r9   s     r   ÚrunParseRobertSchumannzTest.runParseRobertSchumann�   s   € õ Œ|ÐAÈtÐTÑTÔTˆˆˆr!   c                ó2   — t          j        dd¬¦  «        }dS )z+
        Loading file: luca/gloria
        úluca/gloriaTr5   Nr7   r9   s     r   ÚrunParseLucazTest.runParseLuca“   s   € õ Œ|˜M°tÐ<Ñ<Ô<ˆˆˆr!   c                ót   — t          j        dd¬¦  «        }t          ¦   «                              |¦  «        }dS )zI
        Loading file and rendering musicxml output: luca/gloria
        rK   Tr5   NrC   rD   s      r   ÚrunMusicxmlOutLucazTest.runMusicxmlOutLuca™   s/   € õ ŒL˜°DÐ9Ñ9Ô9ˆÝ‰uŒu�{Š{˜1‰~Œ~ˆˆˆr!   c                ó”   — ddl m} g d¢}t          d¦  «        D ]-}|                     ||t	          |¦  «        z           ¦  «         Œ.dS )z4
        Creating 500 TimeSignature objects
        r   ©Úmeter)ú4/4rR   rR   ú3/4rS   ú2/4rT   ú2/2rU   z3/8z6/8z9/8z5/4z12/8r   N)r   rQ   r   ÚTimeSignaturer,   )r   rQ   ÚtsStrr   s       r   ÚrunCreateTimeSignatureszTest.runCreateTimeSignatures    sn   € ð 	"Ð!Ð!Ð!Ð!Ð!ð<ð <ð <ˆõ �s‘”ð 	7ð 	7ˆAØ×Ò  a­#¨e©*¬*¡nÔ 5Ñ6Ô6Ð6Ð6ð	7ð 	7r!   c                ó²   — ddl m} g d¢}t          d¦  «        D ]<}||t          |¦  «        z           }|                     ¦   «         }||_        |j        }Œ=dS )z1
        Creating 10000 Duration objects
        r   )Úduration)é   r&   é   g      à?gUUUUUUÕ?g      Ð?g      À?i'  N)r   rZ   r   r,   ÚDurationÚquarterLength)r   rZ   ÚqlListr   ÚqlÚdr:   s          r   ÚrunCreateDurationszTest.runCreateDurations«   su   € ð 	%Ð$Ð$Ð$Ð$Ð$Ø3Ð3Ð3ˆå�u‘”ð 	#ð 	#ˆAØ˜�C ™KœK™Ô(ˆBØ×!Ò!Ñ#Ô#ˆAØ ˆAŒOØ”?ˆDˆDð		#ð 	#r!   c                óÆ   — ddl m} g d¢}t          d¦  «        D ]F}||t          |¦  «        z           }|                     |¦  «        }|                     dd¬¦  «         ŒGdS )	z.
        Creating 50000 Pitch objects
        r   )Úpitch)g      ø?é   gu­½OUU4@é   g      @zA#zb`zc6#~iPÃ  Úp5T)ÚinPlaceN)r   rd   r   r,   ÚPitchÚ	transpose)r   rd   ÚpListr   Ú
inputPNamer@   s         r   ÚrunCreatePitcheszTest.runCreatePitches¸   s~   € ð 	"Ð!Ð!Ð!Ð!Ð!Ø?Ð?Ð?ˆå�u‘”ð 	,ð 	,ˆAØ˜q¥3 u¡:¤:™~Ô.ˆJØ—’˜JÑ'Ô'ˆAØ�KŠK˜ dˆKÑ+Ô+Ð+Ð+ð	,ð 	,r!   c                ó.   — t          j        d¦  «        }dS )zH
        Creating loading a large multiple work abc file (han1)
        zessenFolksong/han1Nr7   )r   Údummys     r   ÚrunParseABCzTest.runParseABCÄ   s   € õ ”Ð1Ñ2Ô2ˆˆˆr!   c                óš  — ddl m} ddl m} ddl m} ddl m} t          j        d¦  «        }|                     ¦   «         }|                     ¦   «         j        }|j	        D ]é}| 
                    |j        ¦  «        D ]Ì}	|	j        dk    rŒ|	                     |j        ¦  «        }
|
€J ‚|	                     |j        ¦  «        }
|
€J ‚|	                     |j        ¦  «        }
|
€J ‚|	j        D ]\}|                     |j        ¦  «        }
|
€J ‚|                     |j        ¦  «        }
|
€J ‚|                     |j        ¦  «        }
|
€J ‚Œ]ŒÍŒêdS )z@
        Test getting elements by context from a Stream
        r   r   ©Úclef©ÚkeyrP   úbwv66.6N)r   r   rs   ru   rQ   r   r8   ÚflattenÚnotesr=   r*   ÚMeasureÚnumberÚgetContextByClassÚClefrV   ÚKeySignatureÚnotesAndRests©r   r   rs   ru   rQ   r   Úunused_flatÚunused_notesr@   Úmr.   r   s               r   ÚrunGetElementsByContextzTest.runGetElementsByContextÊ   s¨  € ð 	#Ð"Ð"Ð"Ð"Ð"Ø Ð Ð Ð Ð Ð ØÐÐÐÐÐØ!Ð!Ð!Ð!Ð!Ð!åŒL˜Ñ#Ô#ˆà—i’i‘k”kˆØ—y’y‘{”{Ô(ˆà”ð 	,ð 	,ˆAØ×)Ò)¨&¬.Ñ9Ô9ð ,ð ,�Ø”8˜q’=�=ØØ×*Ò*¨4¬9Ñ5Ô5�ØÐ'Ð'Ð'Ø×*Ò*¨5Ô+>Ñ?Ô?�ØÐ'Ð'Ð'Ø×*Ò*¨3Ô+;Ñ<Ô<�ØÐ'Ð'Ð'àœð ,ð ,�AØ×.Ò.¨t¬yÑ9Ô9�DØÐ+Ð+Ð+Ø×.Ò.¨uÔ/BÑCÔC�DØÐ+Ð+Ð+Ø×.Ò.¨sÔ/?Ñ@Ô@�DØÐ+Ð+Ð+Ð+ð,ð,ð	,ð 	,r!   c                óš  — ddl m} ddl m} ddl m} ddl m} t          j        d¦  «        }|                     ¦   «         }|                     ¦   «         j        }|j	        D ]é}| 
                    |j        ¦  «        D ]Ì}	|	j        dk    rŒ|	                     |j        ¦  «        }
|
€J ‚|	                     |j        ¦  «        }
|
€J ‚|	                     |j        ¦  «        }
|
€J ‚|	j        D ]\}|                     |j        ¦  «        }
|
€J ‚|                     |j        ¦  «        }
|
€J ‚|                     |j        ¦  «        }
|
€J ‚Œ]ŒÍŒêdS )zD
        Test getting elements by using the previous method
        r   r   rr   rt   rP   rv   N)r   r   rs   ru   rQ   r   r8   rw   rx   r=   r*   ry   rz   Úpreviousr|   rV   r}   r~   r{   r   s               r   ÚrunGetElementsByPreviouszTest.runGetElementsByPreviousë   s¢  € ð 	#Ð"Ð"Ð"Ð"Ð"Ø Ð Ð Ð Ð Ð ØÐÐÐÐÐØ!Ð!Ð!Ð!Ð!Ð!åŒL˜Ñ#Ô#ˆà—i’i‘k”kˆØ—y’y‘{”{Ô(ˆà”ð 	,ð 	,ˆAØ×)Ò)¨&¬.Ñ9Ô9ð ,ð ,�Ø”8˜q’=�=ØØ—z’z $¤)Ñ,Ô,�ØÐ'Ð'Ð'Ø—z’z %Ô"5Ñ6Ô6�ØÐ'Ð'Ð'Ø—z’z #Ô"2Ñ3Ô3�ØÐ'Ð'Ð'àœð ,ð ,�AØ×.Ò.¨t¬yÑ9Ô9�DØÐ+Ð+Ð+Ø×.Ò.¨uÔ/BÑCÔC�DØÐ+Ð+Ð+Ø×.Ò.¨sÔ/?Ñ@Ô@�DØÐ+Ð+Ð+Ð+ð,ð,ð	,ð 	,r!   c                ó2   — t          j        dd¬¦  «        }dS )r3   zmonteverdi/madrigal.5.3.rntxtTr5   Nr7   )r   Úunuseds     r   ÚrunParseMonteverdiRNTextzTest.runParseMonteverdiRNText  s   € õ ”Ð=È4ÐPÑPÔPˆˆˆr!   c           
     ó  — | j         ddif| j        dddœffD ]ì\  }}t          j        ¦   «         }|                     ¦   «           |¦   «          |                     ¦   «           |¦   «         }t          |                     ¦   «         ¦  «        }|                     ¦   «          | 	                    ¦   «          t                               dt          |j                             ¦   «         ¦  «        d|dd	„ |D ¦   «         d
g¦  «         ŒídS )a  
        Test the performance of methods defined above,
        comparing the resulting time to the time obtained in past runs.

        This should not produce errors as such, but is used to provide reference
        if overall performance has changed.
        z
2011.11.29gÃõ(\�Â@gíƒ,&Ž@gŸâÿ“°@)z
2010.11.10z
2010.11.11z

timing tolerance for:z

this run:z
best runs:c                ó"   — g | ]\  }}|› d |› �‘ŒS )z: © )Ú.0r?   Úys      r   ú
<listcomp>z,Test.testTimingTolerance.<locals>.<listcomp>—  s&   € Ð%DÐ%DÐ%D±d°a¸¨ k k¨a k kÐ%DÐ%DÐ%Dr!   ú
N)r†   rƒ   r   ÚTimerÚstartÚstopÚlistÚitemsÚsortÚreverseÚenvironLocalÚ
printDebugÚstrÚ__doc__Ústrip)r   Ú
testMethodÚbestÚtÚdurr•   s         r   ÚtestTimingTolerancezTest.testTimingTolerance  s"  € ð Ô*à  $ððð
 Ô)à"+Ø"/ðð ððm!
ð }	&ð }	&ÑˆJ˜õ^ ”‘”ˆAØ�GŠG‰IŒIˆIàˆJ‰LŒLˆLØ�FŠF‰HŒHˆHØ�!‘#”#ˆCÝ˜Ÿš™œÑ&Ô&ˆEØ�JŠJ‰LŒLˆLØ�MŠM‰OŒOˆOÝ×#Ò#Ð%@Ý%(¨Ô);×)AÒ)AÑ)CÔ)CÑ%DÔ%DØ%2°C¸Ø%DÐ%D¸eÐ%DÑ%DÔ%DÀdð%'ñ &ô &ð &ð &ðq}	&ð }	&r!   N)Ú__name__Ú
__module__Ú__qualname__r    r$   r/   r1   r;   rA   rE   rG   rI   rL   rN   rX   rb   rm   rp   rƒ   r†   r‰   r¡   rŒ   r!   r   r	   r	       sD  € € € € € ðð ð ð&ð ð ð&.ð .ð .ð(.ð .ð .ð(Oð Oð Oð"ð "ð "ðð ð ðKð Kð KðUð Uð Uð=ð =ð =ðð ð ð	7ð 	7ð 	7ð#ð #ð #ð
,ð 
,ð 
,ð3ð 3ð 3ð,ð ,ð ,ðB,ð ,ð ,ðBQð Qð QðF&ð F&ð F&ð F&ð F&r!   r	   Ú__main__r\   )r›   Ú
__future__r   Úunittestr   r   r   r   Úmusic21.musicxml.m21ToXmlr   r>   ÚEnvironmentr˜   ÚTestCaser	   r¢   Úsysr,   ÚargvÚmainTestrŒ   r!   r   ú<module>r®      s  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ Bà&ˆ{Ô&Ð'=Ñ>Ô>€ð
y&ð y&ð y&ð y&ð y&ˆ8Ôñ y&ô y&ð y&ðz ˆzÒÐØ€J€J€Jà
€sˆ3Œ8�}„}˜ÒÐàˆÔ˜ÑÔÐÐÐð Ðð Ðr!   