【发布时间】:2014-09-15 01:57:30
【问题描述】:
我正在寻找优化我编写的程序,但我确实遇到了一些绊脚石。我有很多问题,我不知道从哪里开始,但对于初学者来说,我会尽量把它简化成一个我似乎无法克服的障碍。
我正在编写的代码是一个需要 24/7 全天候工作的小型日程生成器。每个班次涵盖两周的时间跨度(有些班次在两周内轮换,但必须保持覆盖要求 - 这就是我必须使用 14 天的原因)。截至目前,我正试图找出最快的方法来检查轮班组合是否在给定的一天中增加了正确的人数。我一直听说 Numpy 在这种类型的东西上速度非常快,但是当我运行以下命令时:
import numpy as np
import time
c_ar = np.array([1,1,1,1,0,0,0,1,1,1,1,0,0,0])
d_ar = np.array([0,0,0,1,1,1,1,0,0,0,1,1,1,1])
e_ar = np.array([0,0,0,1,1,1,1,0,0,0,1,1,1,1])
m_ar = np.array([0,1,1,0,1,1,0,0,1,1,0,1,1,0])
p_ar = np.array([1,1,0,0,0,1,1,1,1,0,0,0,1,1])
t0 = time.time()
x = c_ar[0] + d_ar[0] + e_ar[0] + m_ar[0] + p_ar[0]
t1 = time.time()
print t1-t0
我回来了:
2.19345092773e-05
但是,如果我运行:
c = [1,1,1,1,0,0,0,1,1,1,1,0,0,0]
d = [0,0,0,1,1,1,1,0,0,0,1,1,1,1]
e = [0,0,0,1,1,1,1,0,0,0,1,1,1,1]
m = [0,1,1,0,1,1,0,0,1,1,0,1,1,0]
p = [1,1,0,0,0,1,1,1,1,0,0,0,1,1]
t2 = time.time()
y = c[0] + d[0] + e[0] + m[0] + p[0]
t3 = time.time()
print t3-t2
我回来了:
1.90734863281e-06
我是否遗漏了一些关于 Numpy 的东西,它会让它比我的例子更快?另外,有没有比我上面使用的两种方法更快的方法?
【问题讨论】:
-
加一个有趣的问题。
标签: python optimization numpy