03-22 简单测试了一下map和列表解析的速度对比

工具:cProfile

测试方法:目录下有1152个文件,分别用map、列表解析和生成器方法,删除所有文件。进行cpu时间对比。

一.map函数方法

def  s():
    os.chdir(
' 1 ' )
    list 
=  os.listdir( ' . ' )
    map(os.remove,list)
    
print   ' done '
if   __name__ == ' __main__ ' :
    cProfile.run(
' s() ' ,)

答案:0.053 cpu time.

 

二.纯正的列表解析方法

 

def  s():
    os.chdir(
' 1 ' )
    list 
=  os.listdir( ' . ' )
    [os.remove(item) 
for  item  in  list]
    
print   ' done '
if   __name__ == ' __main__ ' :
    cProfile.run(
' s() ' ,)

答案:0.675 cpu time。

 

三.加入生成器

 

def  s():
    os.chdir(
' 1 ' )
    list 
=  os.listdir( ' . ' )
    
for  i  in  list:
        
yield  i
def  main():
    [os.remove(i) 
for  i  in  s()]
    
print   ' done '
if   __name__ == ' __main__ ' :
    cProfile.run(
' main() ' ,)

答案:0.523 cpu time。

 

当然,我这种测试方法有一定局限性,只是测试删除文件。但之所以举这个例子,是想纯正的看看他们三个的速度,而不要让时间花在大量的“其他处理”上。

得出结论:

1.map最快:因为内部采用的是C的循环嘛。

2.生成器次之。我这种写法是最传统的,如果优化,肯定再好一些。

3.列表解析。

 

自己做完实验后,才知道实际中用哪种效率更高。

转载于:https://www.cnblogs.com/yd1227/archive/2011/03/22/1991818.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值