![]() |
1
4
我更关注的是优化以从python中获得更多信息,而不是优化算法,因为我认为这里没有多少算法上的改进。下面是我提出的一些Python优化。 (1)。因为您似乎在使用python 2.x,所以将all range()更改为x range()的.range()会在迭代之前生成完整的数字列表,而x range会根据需要生成它们。 (2)。对max和min进行以下替换:
具有
和
具有
第一个循环和第二个循环的相似循环。还有另一个min()在后面,还有一个max()在函数的开头,所以对它们也做同样的操作。替换min()和max()真的有助于减少时间。这些函数很方便,但比我用的方法要贵。 (3)。使用common1而不是len(ass1)。您已经跟踪了common1中ass1的长度,所以让我们使用它,而不是调用一个昂贵的函数来再次找到它。 (4)。更换以下代码:
具有
这主要是因为str1[:same]每次通过循环都创建一个新字符串,您将检查已经检查过的部分。此外,不需要检查
(5)。使用 psyco 是一个即时编译器。下载并安装后,只需添加行
在文件的顶部使用它。不要使用psyco,除非你做了我提到的其他更改。出于某种原因,当我在您的原始代码上运行它时,它实际上减慢了速度。 使用TimeIt,我发现随着前4个变化,我的时间减少了大约20%。但是,当我将psyco与这些更改一起添加时,代码比原始代码快3到4倍。 如果你想要更快的速度 字符串的find()方法中有相当多的剩余时间。我决定用我自己的来代替这个。对于第一个循环,我替换了
具有
以及第二个循环的类似形式。没有psyco,这会减慢代码的速度,但是有了psyco,它会大大加快代码的速度。最后一次修改后,代码比原来的快8到9倍。 如果速度不够快 然后你可能会转向制作一个C模块。 祝你好运! |
![]() |
2
2
我想如果你使用Pylevenshtein模块,你会做得更好。对于大多数用例来说,它是C并且相当快。它包括一个JaroWinkler函数,可以提供相同的输出,但在我的机器上,它的速度快63倍。
|
![]() |
3
0
除了贾斯汀所说的所有内容之外,串接字符串的开销也很大——python必须为新字符串分配内存,然后将两个字符串都复制到新字符串中。 所以这是坏的:
创建ass1和ass2字符列表和使用
|
![]() |
Hatsune Miku · 比较或if语句是否更快[已关闭] 1 年前 |
![]() |
Black Swan · 无法解压缩的值太多(应为2)错误 1 年前 |
![]() |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
![]() |
Balfar · 处理NumPy阵列上的循环最有效的方法是什么? 2 年前 |
![]() |
Daniel · C#轻松存储快速访问的大型位矩阵 6 年前 |
|
halbe · 优化音频DSP程序的numpy计算 6 年前 |
![]() |
Afsara · 是否有任何方法不能优化我们的应用程序? 6 年前 |