【发布时间】:2011-03-24 21:12:29
【问题描述】:
我刚刚开始了解 numpy,它声称在其 ndarray 中具有类似 C 的效率以及内存访问给我留下了深刻的印象。我想亲自看看这些和 pythonic 列表之间的区别,所以我运行了一个快速计时测试,在没有它的情况下使用 numpy 执行一些相同的简单任务。正如预期的那样,Numpy 在数组的分配和算术运算方面超过了常规列表一个数量级。但是这段代码在两个测试中都相同,使用常规列表大约需要 1/8 秒,使用 numpy 大约需要 2.5 秒:
file = open('timing.log','w')
for num in a2:
if num % 1000 == 0:
file.write("Multiple of 1000!\r\n")
file.close()
有谁知道为什么会这样,如果有其他语法我应该使用这样的操作来更好地利用 ndarray 可以做什么?
谢谢...
编辑:回答韦恩的评论...我以不同的顺序重复计时,每次都得到几乎相同的结果,所以我怀疑这是另一个过程。我放了
start = time() 在 numpy 导入之后的文件顶部,然后我有像 print 'Time after traversal:\t',(time() - start) 这样的语句。
【问题讨论】:
-
你能说明你是如何测量时间的吗?您是否尝试交换您接受的订单?您正在写入磁盘的事实使时间问题变得复杂(如果
[insert-process-here]在 numpys 测试期间以更高的优先级写入磁盘怎么办?) -
感谢所有回复!所有人都提供了丰富的信息。抱歉,我没有足够的声望给他们投票!
标签: python performance numpy