★ ★ 小木虫(金币+0.5 ):给个红包,谢谢回帖 dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-19 15:30:34 微尘、梦想(程序强帖+1): 2011-06-19 17:23:58
引用回帖: Originally posted by holmescn at 2011-06-18 18:00:12:
libralibra兄, reduce 比sum 要快吗?
不会吧,我觉得sum应该快吧.我检测结果也是,还只测试了10^3-10^7的数,要是规模大,估计lambda表达式更慢.
感觉reduce,map,zip,lambda..就是为了写出来好看,少写几行代码的.
另,matlab我也发现这个问题,第28题螺旋矩阵四角求和那个,后面六十几还是八十几有个类似的,找到4个数等差数列的通项,用sum(start:step:end),并没有这样快: start+(start+step)+(start+2*step)+(start+3*step)CODE: ================================
REDUCE+LAMBDA: 1000
499500
Elapsed time: 0.00649915 seconds
SUM: 1000
499500
Elapsed time: 0.00453717 seconds
================================
REDUCE+LAMBDA: 10000
49995000
Elapsed time: 0.00579124 seconds
SUM: 10000
49995000
Elapsed time: 0.00484922 seconds
================================
REDUCE+LAMBDA: 100000
4999950000
Elapsed time: 0.03130733 seconds
SUM: 100000
4999950000
Elapsed time: 0.00988506 seconds
================================
REDUCE+LAMBDA: 1000000
499999500000
Elapsed time: 0.34010105 seconds
SUM: 1000000
499999500000
Elapsed time: 0.13641119 seconds
================================
REDUCE+LAMBDA: 10000000
49999995000000
Elapsed time: 3.26226713 seconds
SUM: 10000000
49999995000000
Elapsed time: 1.39761869 seconds
代码CODE: from mytictoc import tic,toc
for i in xrange(3,8):
print '================================'
print 'REDUCE+LAMBDA: %d' % (10**i)
tic()
print reduce(lambda x,y:x+y,xrange(10**i))
toc()
print 'SUM: %d' % (10**i)
tic()
print sum(xrange(10**i))
toc()
[ Last edited by libralibra on 2011-6-18 at 22:00 ]