如何测试LT代码的实现?

时间:2012-09-20 11:25:36

标签: python testing

受到尼克约翰逊博客Damn Cool Algorithms: Fountain Codes的启发,我决定实施Luby Transform (LT) code。我把它推到GitHub;它是用Python 3编写的。

我使用一个非常短的文件开发它,只包含“hello”并在随机生成的1MB文件上进行测试。该软件似乎有效地编码和解码文件,只有原始文件的长度,块大小和编码器与解码器之间共享的水滴。

问题是,我该如何证明这确实是LT代码的忠实实现?如何证明解码算法有效?

我的意图是使用Python的计数引用系统删除使用的液滴。 如何检查确实发生了这种情况?

对代码本身的任何反馈也是受欢迎的,但它可能更适合作为评论(而不是答案)或GitHub上的问题。

1 个答案:

答案 0 :(得分:2)

如果您只想查看引用计数是否有效,可以在类中定义__del__方法。请注意,这将阻止循环GC处理这些类

另一种方法是查看对类的引用计数的更改,因为每个实例都包含对类的引用

>>> from sys import getrefcount
>>> class Obj(object):
...  pass
... 
>>> sys.getrefcount(Obj)
5
>>> obj_list=[Obj() for x in range(5)]
>>> sys.getrefcount(Obj)
10
>>> obj_list[:3]=[]
>>> sys.getrefcount(Obj)
7