CIDR只保留构建树所需的前缀位,减少最终文件体积约100k;树底层使用map替代object提高大约7倍查询效率(实际单次查询差距绝对值在0.002ms以下,无意义的优化)

This commit is contained in:
zhiyi
2024-12-04 17:02:21 +08:00
parent 509f516d1d
commit 74e6d0aa47
5 changed files with 60 additions and 86 deletions

View File

@@ -27,16 +27,11 @@ def parse_args():
def convert_cidr(cidr):
if '/' in cidr:
network = ipaddress.ip_network(cidr.strip(), strict=False)
network_address = network.network_address
prefixlen = network.prefixlen
network_address = int(network.network_address) >> (network.max_prefixlen - network.prefixlen)
else:
network = ipaddress.ip_address(cidr.strip())
network_address = network
prefixlen = network.max_prefixlen
if network.version == 4:
return hex(int(network_address))[2:] + '/' + str(prefixlen)
else:
return network.compressed
return hex(int(network_address))[2:]
def generate_cnip_cidrs():
""" 从文件中读取CIDR地址 """