³ò
êñMc           @   sh   d  Z  d d k l Z d d k Z d d k Z d d k l Z d d k l Z d e f d     YZ d S(   s"   Performance tests for object storei˙˙˙˙(   t   timeN(   t   mman(   t   TestBigRepoRt   TestObjDBPerformancec           B   s   e  Z d    Z RS(   c         C   sÎ  d g d g d g g } xt|  i  |  i f D]`} t   } | i |  i  } t | i    } t |  } t   | } t i	 d t
 | i  | | | | f IJ| d i |  t   } t   } d }	 xs | d  D]g }
 |
 i } t   } x? | i   D]1 } |	 d 7}	 | i
 d j o | i |  qú qú W| i |  qĠ Wt   | } t i	 d	 t
 | i  |	 t |  | |	 | f IJ| d i |  t   } d } d
 } d } xZ | D]R } x' | D] } | t | i i    7} qÀW| t |  7} | | j o Pq³q³Wt   | } t i	 d t
 | i  | | d | | | | d | f IJ| d i |  t d  j	 o t i	 d t i   IJq+ q+ Wx8 | D]0 \ } } } t i	 d | | | | | f IJqWd  S(   Ns   Iterate Commitss   Iterate Blobss   Retrieve Blob DatasD   %s: Retrieved %i commits from ObjectStore in %g s ( %f commits / s )i    i
   i   t   blobsC   %s: Retrieved %i objects from %i commits in %g s ( %f objects / s )i:  sR   %s: Retrieved %i blob (%i KiB) and their data in %g s ( %f blobs / s, %f KiB / s )iè  i   s#   Memmory Manager had %i open handless)   %s: %f s vs %f s, pure is %f times slower(   t	   gitrorepot   puregitrorepoR    t   committ   head_sha_2kt   listt   traverset   lent   syst   stderrt   typet   odbt   appendt   treet   data_streamt   readR   t   Nonet   num_file_handles(   t   selft   resultst   repot   stt   root_committ   commitst   nct   elapsedt   blobs_per_committ   ntR   R   t   blobst   itemt   nbt   too_manyt
   data_bytest	   blob_listR   t	   test_namet   at   b(    (    sB   /home/byron/projects/git-python03/git/test/performance/test_odb.pyt   test_random_access   s\     	*		 		 
3	  	< (   t   __name__t
   __module__R)   (    (    (    sB   /home/byron/projects/git-python03/git/test/performance/test_odb.pyR      s   (	   t   __doc__R    R   t   statt   git.utilR   t   libR   R   (    (    (    sB   /home/byron/projects/git-python03/git/test/performance/test_odb.pys   <module>   s   