循环map_map和for循环性能测试

之前在某个资料上看的,于是轻信了。最近刚好用到map,于是就顺手做了一次验证。结果居然打了脸。

主要功能:对一个整数列表的所有元素进行平方运算。并使用timeit进行时间统计。

我们分别使用map函数、列表推导式、for循环傻瓜式三种方式进行处理。并计算出每一种方式执行100次的总耗时。

实验环境:

  • window10
  • python2.7
  • pycharm
代码如下:

def xunhuan(x):
    return x ** 2


num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def m1():

    ret = map(xunhuan, num)
    return ret

def m2():
    ret = [item ** 2 for item in num]
    return ret

def m3():
    ret = []
    for item in num:
        ret.append(item ** 2)
    return ret


times = timeit.timeit(stmt="m1()", setup="from  __main__ import m1", number=100)
print ('m1 map total time is {}'.format(times))

times = timeit.timeit(stmt="m2()", setup="from  __main__ import m2", number=100)
print ('m2  total time is {}'.format(times))

times = timeit.timeit(stmt="m3()", setup="from  __main__ import m3", number=100)
print ('m3  total time is {}'.format(times))

打印结果是:

m1 map total time is 0.000786878907492
m2  total time is 0.000181616484887
m3  total time is 0.000257887856918

从结果看出,map函数的处理速度最慢。其次是for循环傻瓜式,最快的居然是列表推导式

map执行时间是列表推导式的4倍耗时,for循环和列表推导性能不相上下,但是列表推导要比for循环厉害。

不知道读到此处的读者有什么不同意见,欢迎留言来怼。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值