python - 如何优化 Python 中大型(75,000 项) bool 值集的操作?

标签 python optimization python-2.6 large-data

这个脚本叫做 svnmerge.py我正在尝试调整和优化一下。虽然我是 Python 的新手,所以这并不容易。

目前的问题似乎与脚本中名为RevisionSet 的类有关。本质上,它所做的是创建一个大型哈希表(?),其中包含整数键控 bool 值。在最坏的情况下 - 我们的 SVN 存储库中的每个修订版,现在接近 75,000 个。

之后,它对如此庞大的数组执行集合运算 - 加法、减法、交集等。该实现是最简单的 O(n) 实现,在如此大的集合上自然会变得相当慢。可以优化整个数据结构,因为连续值的跨度很长。例如,从 1 到 74,000 的所有键都可能包含 true。此外,该脚本是为 Python 2.2 编写的,这是一个相当旧的版本,无论如何我们使用的是 2.6,因此也可能有一些收获。

我可以尝试自己将其拼凑在一起,但这会很困难并且需要花费很多时间 - 更不用说它可能已经在某个地方实现了。虽然我喜欢学习经验,但现在结果更重要。你会建议我做什么?

最佳答案

您可以尝试使用 numpy 而不是普通的 python。我发现它对于此类操作非常很快。

例如:

# Create 1000000 numbers between 0 and 1000, takes 21ms
x = numpy.random.randint(0, 1000, 1000000)

# Get all items that are larger than 500, takes 2.58ms
y = x > 500

# Add 10 to those items, takes 26.1ms
x[y] += 10

因为有更多的行,我认为 75000 也不成问题:)

关于python - 如何优化 Python 中大型(75,000 项) bool 值集的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3967566/

相关文章:

Python BeautifulSoup 提取 PHP 链接

python - matplotlib savefig - 没有这样的文件或目录

html - 为浏览器优化的 CSS

c++ - 使用自定义模块构建 python 解释器时出现问题

pyqt4 - 将 QDate 转换为秒

python - 处理路径变量python内的空格

python - Google 应用程序引擎 - 错误 : Model constructor takes no positional arguments

python - 在python中转置数据

mysql - 优化mysql中的表

Java 优化 : speed of inner loops inconsistent?