-
Notifications
You must be signed in to change notification settings - Fork 436
Open
Labels
Description
Why is country_name_for_number so slow compared to region_code_for_number?
I'd expect the a lookup for the region_code to country_name to be quite quick. It appears to check validity of the number. I haven't figured out where most time is spent yet.
Suppose there's any way to speed things up?
--Karl
from phonenumbers import format_number, is_possible_number, is_possible_number_with_reason, is_valid_number, number_type
from phonenumbers.geocoder import region_code_for_number, country_name_for_number, description_for_number
# setup p for test
p = parse('13035551212', 'US')
print("parse_number:", timeit(lambda: parse('13035551212','US'), number=10000))
print("format_number:", timeit(lambda: format_number(p, phonenumbers.PhoneNumberFormat.E164), number=10000))
print("is_possible_number:", timeit(lambda: is_possible_number(p), number=10000))
print("is_possible_number_with_reason:", timeit(lambda: is_possible_number_with_reason(p), number=10000))
print("is_valid_number:", timeit(lambda: is_valid_number(p), number=10000))
print("number_type:", timeit(lambda: number_type(p), number=10000))
print("region_code_for_number:", timeit(lambda: region_code_for_number(p), number=10000))
print("country_name_for_number:", timeit(lambda: country_name_for_number(p, 'en'), number=10000))
print("desctription_for_number:", timeit(lambda: description_for_number(p, 'en'), number=10000))results
('parse_number:', 1.0535039901733398)
('format_number:', 0.021859169006347656)
('is_possible_number:', 0.036605119705200195)
('is_possible_number_with_reason:', 0.0437769889831543)
('is_valid_number:', 1.0846400260925293)
('number_type:', 1.1673779487609863)
('region_code_for_number:', 0.5287020206451416)
('country_name_for_number:', 4.455769062042236)
('desctription_for_number:', 1.7113380432128906)