文档章节

测试 filter/map 与 列表推到性能对比

aszhou
 aszhou
发布于 2017/07/22 17:16
字数 388
阅读 8
收藏 0

以下是根据《流畅的python》修改部分代码:


#!/usr/bin/env python
# encoding: utf-8
import timeit
import random
import string
TIMES = 10000

def random_char(y):
    return ''.join(random.choice(string.ascii_letters) for x in range(y))


SETUP = """
import random
import string
def random_char(y):
    return ''.join(random.choice(string.ascii_letters) for x in range(y))
symbols = random_char(10000)
def non_ascii(c):
    return c > 127
"""
# SETUP =  random_char(10)
def clock(label, cmd):
    res = timeit.repeat(cmd, setup=SETUP, number=TIMES)
    print(label, *('{:.3f}'.format(x) for x in res))

clock('listcomp        :', '[ord(s) for s in symbols if ord(s) > 127]')
clock('listcomp + func :', '[ord(s) for s in symbols if non_ascii(ord(s))]')
clock('filter + lambda :', 'list(filter(lambda c: c > 127, map(ord, symbols)))')
clock('filter + func   :', 'list(filter(non_ascii, map(ord, symbols)))')

结果如下:

listcomp        : 8.093 8.029 7.942
listcomp + func : 16.419 16.220 16.152
filter + lambda : 12.938 12.886 12.998
filter + func   : 13.401 13.535 13.091
#!/usr/bin/env python
# encoding: utf-8

"""
@version: 0.1
@author: aszhou
@license: Apache Licence 
@contact: zjmjordan@sina.com
@site: 
@software: PyCharm
@file: demo.py
@time: 2017/7/18 0018 15:49
@description:
    
"""

import timeit
import random
import string

TIMES = 10000


def random_char(y):
    return ''.join(random.choice(string.ascii_letters) for x in range(y))


bs = [s for s in random_char(100)]

SETUP = """
import random
import string
def random_char(y):
    return ''.join(random.choice(string.ascii_letters) for x in range(y))
symbols = random_char(100)
varas = [s for s in symbols]
varbs = [s for s in symbols]
def func(va,vb):
    l=[]
    for m in varas:
        for n in varbs:
            l.append((m,n))    
     
"""


# SETUP =  random_char(10)
def clock(label, cmd):
    res = timeit.repeat(cmd, setup=SETUP, number=TIMES)
    print(label, *('{:.3f}'.format(x) for x in res))


clock('listcomp        :', '[(a,b) for a in varas for b in varbs]')

clock('listcomp + func :', 'func(varas,varbs)')
 

结果如下

listcomp        : 7.159 6.899 6.908
listcomp + func : 11.767 11.623 11.395

我的运行环境python 3.6,在使用内置函数时(不准确,需要更多内部函数进行测试),列表推导速度最快,但是当使用自定义函数时,反而性能最差。

© 著作权归作者所有

共有 人打赏支持
aszhou
粉丝 0
博文 4
码字总数 1014
作品 0
南京
程序员
私信 提问
【秘籍总结】玩转Python里的字符串|上篇

这是菜鸟学Python的第108篇原创文章 阅读本文大概需要2分钟 目前累计已经写了100多篇,写了小白入门篇,爬虫数据库篇,以及数据可视化分析.洋洋洒洒,越写越多.下一个阶段我准备开始写机器学习...

菜鸟学python
2017/10/31
0
0
Kqueue 实现非阻塞 Socket 通信

如果有误,请大神指出啊! 之前留下的坑 之前写过一篇 kqueue 实现文件操作监控,讲了 Kqueue 在文件监控的应用,文章给出的例子只对于一个 test 文件进行监控。 Kqueue 或者 Epoll 更多的是...

xh4n3
2015/11/03
0
0
Python 进阶语法四 —— Map、Filter和Reduce

四、Map、Filter和Reduce Map、Filter和Reduce三个函数能为函数式编程提供便利。我们会通过实例一个一个讨论并理解它们。 Map Map会将一个函数映射到一个输入列表的所有元素上。这是它的规范...

东方神剑
2016/11/27
10
0
【python特殊用法系列1】filter,map,reduce.lambda

看到这篇文章的人,想必都对python的各种诡谲技巧是又爱又恨,也都抱着掌握这些技巧,改善自己的生活,提升自己的境界;哈哈本文可能不能让大家这么快速做出改变,但可以让大家稍微见识一下p...

Monkey_D_lufy
2014/04/06
0
0
【原创】Python 之快速性能优化(第二部分)

本文为翻译,原文地址:《Quick Python Performance Optimization: Part II》 This is the Part II of Quick Python Performance Optimizations. 本文是 Python 性能优化二两发的第二部分。 ......

摩云飞
2013/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
3
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
3
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
5
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
3
0
技术工坊|如何开发一款以太坊钱包(深圳)

【好消息!】HiBlock区块链技术工坊已经成功举办了26期,其中北京1期,西安1期,成都2期,上海22期。经常有社区的小伙伴问定期举办技术工坊的除了上海以外,其他城市有没有?现在区块链技术工...

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部