优化3d点哈希函数

时间:2011-12-23 22:44:53

标签: python optimization hash

我有一个三维点类,根据探查器,它的哈希函数是进行优化的好地方。现在,我只是将坐标元组传递给内置哈希函数:

def __hash__(self):
        return hash((self.x, self.y, self.z))

如何让它更快?我假设每次构建一个元组都不好。坐标是实值的。

2 个答案:

答案 0 :(得分:5)

使用元组而不是自己的类会更快。

如果你真的想编写p.x而不是p [0],那么你可以使你的类成为元组的子类并具有访问器。它仍然比实现自己的元组快得多。

class Point3d(tuple):
    @property
    def x(self):
        return self[0]

    @property
    def y(self):
        return self[1]

    @property
    def z(self):
        return self[2]

答案 1 :(得分:1)

尝试使用named tuple代替您自己的课程。