【发布时间】:2020-06-11 00:54:10
【问题描述】:
Dict() 会消耗内存,所以我尝试使用其他方式。使用 6Gb 的数据对象,现在是 700M。但是,在搜索方面,我实现的速度非常慢
我知道我无法与 python 竞争,但至少让它变得更好
如果你有任何想法,也许是 Cpython
首先:我尝试了链接节点,但仍然很慢
from recordclass import dataobject
class node(dataobject):
elt1:tuple
elt2:list
_next:str
def find(n1,elt1):
if n1 is None:
return None
if n1.elt1==elt1:
#print(n1.elt2)
return n1.elt2
else:
return find(n1._next,elt1)
#or
def find1(n1,elt1):
while n1 is not None:
if n1.elt1==elt1:
#print(n1.elt2)
return n1.elt2
else:
n1=n1._next
n1=None
daca=dict()
for i in range(0,100,2):
n1=node(i,i+1,n1)
daca[i]=i+1
#find(n1,12) compared to daca[12], dictionary is 7 times faster than find
第二个:我尝试将所有节点附加到一个列表中,但仍然很慢
from recordclass import dataobject
class node(dataobject):
elt1:tuple
elt2:list
def find(n1,elt):
return list(filter(lambda x: x.elt1==elt ,n1))
n1=[]
daca=dict()
for i in range(0,100,2):
n1.append(node(i,i+1) )
daca[i]=i+1
#find(n1,12) compared to daca[12], dictionary is 7 times faster than find
【问题讨论】:
标签: python-3.x performance optimization compiler-optimization cpython