为什么Python在简单的for循环中如此慢?
- 论坛
- 为什么Python在简单的for循环中如此慢?
8 浏览
为什么Python在简单的for循环中如此慢?
我们正在使用Python进行一些kNN和SVD的实现。其他人选择了Java。我们的执行时间非常不同。我使用cProfile来查看我是否犯了错误,但实际上一切都还不错。是的,我也使用了numpy。但我想问一个简单的问题。
total = 0.0 for i in range(9999): # xrange比我的测试慢,但更节省内存。 for j in range(1, 9999): total += (i / j) print total
这段代码在我的电脑上需要31.40秒。
同样的电脑上,Java版本的代码只需要1秒钟或更少。我想这个代码的主要问题是类型检查。但是对于我的项目,我需要执行很多类似的操作,而且我认为9999*9999并不是一个很大的数字。
我认为我犯了错误,因为我知道Python被许多科学项目使用。但为什么这段代码如此缓慢,我该如何处理比这更大的问题?
我应该使用像Psyco这样的JIT编译器吗?
编辑
我还要说这个循环问题只是一个例子。代码并不像这么简单,将你的改进/代码示例付诸实践可能会很困难。
另一个问题是,如果我正确使用numpy和scipy,我可以实现很多数据挖掘和机器学习算法吗?