o
    ïT·j„   ã                   @   sª  d Z ddlmZ ddlZddlZddlZddlZddlm	Z	 ej
defdd„ƒZdeejgdf d	eejgdf fd
d„Zedejfdd„ƒZedejfdd„ƒZedejfdd„ƒZedejfdd„ƒZedejfdd„ƒZedejfdd„ƒZedejfdd„ƒZedejfdd„ƒZedejfdd„ƒZedejfdd „ƒZedejfd!d"„ƒZedejfd#d$„ƒZedejfd%d&„ƒZedejfd'd(„ƒZedejfd)d*„ƒZedejfd+d,„ƒZedejfd-d.„ƒZedejfd/d0„ƒZ edejfd1d2„ƒZ!edejfd3d4„ƒZ"edejfd5d6„ƒZ#edejfd7d8„ƒZ$edejfd9d:„ƒZ%edejfd;d<„ƒZ&edejfd=d>„ƒZ'e(d?k�rSe)d@dA„ ej*D ƒƒ�rMe +¡  dS e,dBƒ dS dS )Cz=Benchmarks for assigning large NumPy data to protobuf fields.é    )ÚCallableN)Úunittest_pb2Ú	num_bytesc                 C   s   t j| ft jd�S )N)ÚshapeÚdtype)ÚnpÚzerosÚuint8)r   © r
   úm/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/google/protobuf/internal/message_benchmark.pyÚ
make_array   s   r   ÚfuncÚreturnc              
      s`   t jt j t j¡t j dg¡t j d¡t j d¡t ˆ ¡dt j	ddf‡ fdd„ƒƒƒƒƒƒ}|S )	z&Decorates a function for benchmarking.r   i  @i  @Ústater   Nc                    s   ˆ | ƒ | j |  d¡ | _d S ©Nr   )Ú
iterationsÚrangeÚbytes_processed)r   ©r   r
   r   Úwrapper   s   zbenchmark.<locals>.wrapper)
Úgoogle_benchmarkÚregisterÚoptionÚunitÚkMillisecondÚ	arg_namesÚargÚ	functoolsÚwrapsÚState)r   r   r
   r   r   Ú	benchmark   s   

$r    r   c                 C   s>   t |  d¡ƒjtjd�}| rt ¡ }||jd d …< | sd S d S ©Nr   ©r   )r   r   Úviewr   Úint32r   ÚTestAllTypesÚrepeated_int32©r   ÚarrÚmsgr
   r
   r   Úbench_build_message_via_slice$   s
   þr*   c                 C   s4   t |  d¡ƒjtjd�}| rtj|d�}| sd S d S )Nr   r"   ©r&   )r   r   r#   r   r$   r   r%   ©r   r(   Ú_r
   r
   r   Úbench_build_message,   s   ÿr.   c                 C   s@   t |  d¡ƒjtjd�}| rt ¡ }||jjd d …< | sd S d S r!   )	r   r   r#   r   r$   r   ÚNestedTestAllTypesÚpayloadr&   r'   r
   r
   r   Ú$bench_build_message_nested_via_slice3   s
   þr1   c                 C   s:   t |  d¡ƒjtjd�}| rtjt|d�d�}| sd S d S ©Nr   r"   r+   ©r0   )r   r   r#   r   r$   r   r/   Údictr,   r
   r
   r   Úbench_build_nested_message_dict;   s   ÿr5   c                 C   s<   t |  d¡ƒjtjd�}| rtjtj|d�d�}| sd S d S r2   )r   r   r#   r   r$   r   r/   r%   r,   r
   r
   r   Ú bench_build_nested_message_int32B   s   
ÿÿr6   c                 C   ó@   |   d¡d }d| gd }| rtjtj|d�d�}| sd S d S )Nr   éè  Úa)Úrepeated_cordr3   ©r   r   r/   r%   ©r   Ú
chunk_sizeÚstringsr-   r
   r
   r   Úbench_build_nested_message_cordK   ó   
ÿÿr?   c                 C   r7   )Nr   r8   r9   )Úrepeated_string_piecer3   r;   r<   r
   r
   r   Ú'bench_build_nested_message_string_pieceU   r@   rB   c                 C   sB   t jjdd�g|  d¡d  }| rt jt j|d�d�}| sd S d S )Né{   )Úbbr   é   )Úrepeated_nested_messager3   )r   r%   ÚNestedMessager   r/   )r   Úsubsr-   r
   r
   r   Ú)bench_build_nested_message_nested_message_   s   ÿ
ÿÿrI   c                 C   sl   t |  d¡ƒjtjd�}t ¡ }t ¡ }|j |¡ | r4|  	¡  | 
¡  |  ¡  |j|jd d …< | sd S d S r!   )r   r   r#   r   Úfloat32r   r%   Úrepeated_floatÚextendÚpause_timingÚClearÚresume_timing©r   r(   r)   Ú
msg_sourcer
   r
   r   Úbench_assign_repeated_floatj   ó   ürR   c                 C   ól   t |  d¡ƒjtjd�}t ¡ }t ¡ }|j |¡ | r4|  	¡  | 
¡  |  ¡  |j|jd d …< | sd S d S r!   )r   r   r#   r   Úint64r   r%   Úrepeated_int64rL   rM   rN   rO   r&   rP   r
   r
   r   Ú$bench_assign_repeated_int64_to_int32w   rS   rW   c                 C   rT   r!   )r   r   r#   r   Úfloat64r   r%   Úrepeated_doublerL   rM   rN   rO   rK   rP   r
   r
   r   Ú%bench_assign_repeated_double_to_float„   rS   rZ   c                 C   óV   t |  d¡ƒjtjd�}t ¡ }| r)|  ¡  | ¡  |  	¡  ||j
d d …< | sd S d S r!   )r   r   r#   r   rU   r   r%   rM   rN   rO   r&   r'   r
   r
   r   Ú!bench_assign_numpy_int64_to_int32‘   ó   ür\   c                 C   r[   r!   )r   r   r#   r   rX   r   r%   rM   rN   rO   rK   r'   r
   r
   r   Ú"bench_assign_numpy_double_to_floatœ   r]   r^   c                 C   óT   t |  d¡ƒjtjd�}t ¡ }| r(|  ¡  | ¡  |  	¡  |j
 |¡ | sd S d S r!   )r   r   r#   r   r$   r   r%   rM   rN   rO   r&   rL   r'   r
   r
   r   Úbench_extend_int32§   ó   ür`   c                 C   sD   t |  d¡ƒ}t ¡ }t|ƒ|_| ¡ }| r tj |¡}| sd S d S r   ©r   r   r   r%   Ú
memoryviewÚoptional_bytesÚSerializeToStringÚ
FromString©r   r(   r)   Ú	msg_bytesr-   r
   r
   r   Úbench_decode_from_bytes²   s   
ÿri   c                 C   sH   t |  d¡ƒ}t ¡ }t|ƒ|_t| ¡ ƒ}| r"tj |¡}| sd S d S r   rb   rg   r
   r
   r   Úbench_decode_from_memoryview¼   s   
ÿrj   c                 C   s8   t |  d¡ƒ}t ¡ }t|ƒ|_| r| ¡ }| sd S d S r   )r   r   r   r%   rc   rd   re   )r   r(   r)   r-   r
   r
   r   Úbench_encode_into_bytesÆ   s   
ÿrk   c                 C   sV   t |  d¡ƒjtjd�}t ¡ }| r)||jd d …< |  ¡  | 	¡  |  
¡  | sd S d S r!   )r   r   r#   r   r$   r   r%   r&   rM   rN   rO   r'   r
   r
   r   Úbench_assign_int32Ï   s   ürl   c                 C   sn   t |  d¡ƒjtjd�}t ¡ }||jd d …< | r5||jt|ƒd …< |  	¡  ||jd d …< |  
¡  | sd S d S r!   )r   r   r#   r   r$   r   r%   r&   ÚlenrM   rO   r'   r
   r
   r   Úbench_assign_extend_int32Ú   s   ürn   c                 C   s`   t |  d¡ƒjtjd�}|d t|ƒd … }t ¡ }|j 	|¡ | r.||jd d d…< | s"d S d S )Nr   r"   é   )
r   r   r#   r   r$   rm   r   r%   r&   rL   )r   r(   Úhalf_arrr)   r
   r
   r   Úbench_assign_slice_int32æ   s   ÿrq   c                 C   r_   r!   )r   r   r#   r   rU   r   r%   rM   rN   rO   rV   rL   r'   r
   r
   r   Úbench_extend_int64ð   ra   rr   c                 C   r_   r!   )r   r   r#   r   rJ   r   r%   rM   rN   rO   rK   rL   r'   r
   r
   r   Úbench_extend_floatû   ra   rs   c                 C   r_   r!   )r   r   r#   r   rX   r   r%   rM   rN   rO   rY   rL   r'   r
   r
   r   Úbench_extend_double  ra   rt   c                 C   sL   t |  d¡ƒ}t ¡ }| ¡ }| r$|  ¡  | ¡  |  ¡  ||_| sd S d S r   )	r   r   r   r%   ÚtobytesrM   rN   rO   rd   )r   r(   r)   Ú	arr_bytesr
   r
   r   Úbench_assign_bytes  s   ürw   c                 C   sH   t |  d¡ƒ}t ¡ }| r"|  ¡  | ¡  |  ¡  t|ƒ|_| sd S d S r   )	r   r   r   r%   rM   rN   rO   rc   rd   r'   r
   r
   r   Ú"bench_assign_bytes_with_conversion  s   
ürx   Ú__main__c                 c   s   � | ]}|  d ¡V  qdS )z--benchmark_filterN)Ú
startswith)Ú.0r   r
   r
   r   Ú	<genexpr>)  s   € r|   z3No benchmark filter specified. Skipping benchmarks.)-Ú__doc__Úcollections.abcr   r   Úsysr   Únumpyr   Úgoogle.protobufr   ÚcacheÚintr   r   r    r*   r.   r1   r5   r6   r?   rB   rI   rR   rW   rZ   r\   r^   r`   ri   rj   rk   rl   rn   rq   rr   rs   rt   rw   rx   Ú__name__ÚanyÚargvÚmainÚprintr
   r
   r
   r   Ú<module>   sŠ    ÿ
þ		



		
	




ü