大量数据想均匀分布到不同的数据库存储,当前方法将key进行MD5或CRC计算,取最后一位分别对应到相应的存储位置。测文本17721088行。
两个脚本如下:
MD5部分
import hashlib
import time
file_list = open('di.txt')
start =time.time()
for get_str in file_list:
if get_str[-1] == '\n':
get_str = get_str[:-1]
get_crc = hashlib.md5(get_str).hexdigest()
#print get_crc
end = time.time()
print end-start
CRC部分
importzlib
importtime
file_list=open('di.txt')
start=time.time()
forget_strinfile_list:
ifget_str[-1]=='\n':
get_str=get_str[:-1]
get_crc=zlib.crc32(get_str)&0xffffffff
end=time.time()
printend-start
md5计算用58.81秒,crc计算用27.06秒。CRC速度比md5快一倍。但是MD5是16进制,CRC是十进制。如果要将CRC转为16进制,所用时间和MD5用时相似。
转自:http://www.simonzhang.net/?p=2178