import math
from timeit import timeit






def  __lowerCamelCase						(		lowerCAmelCase__      ):
       lowerCAmelCase__	      =   0
       lowerCAmelCase__	      =   abs(UpperCAmelCase_      )
       while True:
              lowerCAmelCase__	      =   n // 1_0
              digits += 1
              if n == 0:
                     break
       return digits






def  __lowerCamelCase						(		lowerCAmelCase__      ):
       return 1 if n == 0 else math.floor(math.log(abs(UpperCAmelCase_      )      ,    1_0      ) + 1      )






def  __lowerCamelCase						(		lowerCAmelCase__      ):
       return len(str(abs(UpperCAmelCase_      )      )      )






def  __lowerCamelCase						(		):
       from collections.abc import Callable

       def benchmark_a_function(lowerCAmelCase__      ,    lowerCAmelCase__      ) -> None:
              lowerCAmelCase__	      =   F"""{func.__name__}({value})"""
              lowerCAmelCase__	      =   timeit(F"""__main__.{call}"""      ,    setup='import __main__'      )
              print(F"""{call}: {func(UpperCAmelCase_      )} -- {timing} seconds"""      )

       for value in (2_6_2_1_4_4, 1_1_2_5_8_9_9_9_0_6_8_4_2_6_2_4, 1_2_6_7_6_5_0_6_0_0_2_2_8_2_2_9_4_0_1_4_9_6_7_0_3_2_0_5_3_7_6):
              for func in (num_digits, num_digits_fast, num_digits_faster):
                     benchmark_a_function(UpperCAmelCase_      ,    UpperCAmelCase_      )
              print()


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    benchmark()






import math
from timeit import timeit





def 							lowerCamelCase    (							UpperCAmelCase_	:      int      )->			int:

       """simple docstring"""




       a			   =0
       a			   =abs(UpperCAmelCase_      )
       while True:
              a			   =n // 10
              digits += 1
              if n == 0:
                     break
       return digits





def 							lowerCamelCase    (							UpperCAmelCase_	:      int      )->			int:

       """simple docstring"""




       return 1 if n == 0 else math.floor(math.log(abs(UpperCAmelCase_      )   ,       10      ) + 1      )





def 							lowerCamelCase    (							UpperCAmelCase_	:      int      )->			int:

       """simple docstring"""




       return len(str(abs(UpperCAmelCase_      )      )      )





def 							lowerCamelCase    (							)->			None:

       """simple docstring"""




       from collections.abc import Callable

       def benchmark_a_function(UpperCAmelCase_	:      Callable   ,       UpperCAmelCase_	:      int      ) -> None:
              a			   =F'''{func.__name__}({value})'''
              a			   =timeit(F'''__main__.{call}'''   ,       setup="""import __main__"""      )
              print(F'''{call}: {func(UpperCAmelCase_      )} -- {timing} seconds'''      )

       for value in (26_2144, 1125_8999_0684_2624, 126_7650_6002_2822_9401_4967_0320_5376):
              for func in (num_digits, num_digits_fast, num_digits_faster):
                     benchmark_a_function(UpperCAmelCase_   ,       UpperCAmelCase_      )
              print()


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    benchmark()
