我正在使用Python中的霍夫曼编码器/解码器,并且在我的代码中遇到了一些意外的(至少对我而言)行为。编码文件很好,解码文件时会出现问题。以下是相关代码:
with open(cfile,"rb") as f
对于所有文件大小(测试大小为1.2MB,679KB和87KB),第一个for b in com
调用运行得非常快,但是显着减慢代码的部分是decode
循环。我已经做了一些时间,老实说,我不知道发生了什么。
我已经为每个文件计时了整个87KB 1.5 sec
679KB 6.0 sec
1.2MB 384.7 sec
函数,如下所示:
cnode = 2*cnode + b + 1
首先,我甚至不知道如何分配这种复杂性。接下来,我已经计时了解有问题的循环,并得到行if cnode in dkey
需要2e-6秒,而 SELECT * from first f join f_s fs on f.first_id=fs.first_id join second s on fs.second_id=s.second_id;
行需要0.0秒(根据time.clock( )在OSX上)。所以看起来这个算法显着减慢了我的程序......?我觉得这没有意义。
我实际上根本不知道发生了什么,任何帮助都会非常受欢迎
答案 0 :(得分:0)
我找到了解决问题的方法,但事后我仍然感到困惑。我通过将dec
从""
更改为[]
,然后将dec += dkey[cnode]
行更改为dec.append(dkey[cnode])
来解决了该问题。这导致了以下时间:
87KB 0.11 sec
679KB 0.21 sec
1.2MB 1.01 sec
正如您所看到的,这极大地缩短了时间,因此在这方面,这是成功的。但是,我仍然感到困惑的是为什么python的字符串连接似乎是这里的问题。