文档章节

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

aszhou
 aszhou
发布于 2017/07/22 17:16
字数 388
阅读 7
收藏 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
HashMap循环遍历方式及其性能对比

主要介绍HashMap的四种循环遍历方式,各种方式的性能测试对比,根据HashMap的源码实现分析性能结果,总结结论。 1. Map的四种遍历方式 下面只是简单介绍各种遍历示例(以HashMap为例),各自优...

闪电
2016/05/11
15
0
【原创】Python 之快速性能优化(第二部分)

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

摩云飞
2013/11/19
0
0
对一个数组 FILTER、SOME、MAP、FOREACH的操作分别有什么作用?

大家好,我是IT修真院北京总院第24期的学员,一枚正直纯洁善良的web程序员 今天给大家分享一下,修真院官网JS任务4,深度思考中的知识点——对一个数组 FILTER、SOME、MAP、FOREACH的操作分别...

我是一只北极熊啊
2017/12/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数字转换为字符的L受哪个参数影响

我们知道,如果想把金额带上本位币,一般加上L, 比如: select to_char(salary,'L99,9999.00') from employees; 下面显示如下: SALARY TO_CHAR(SALARY,'L99, 2900 ¥2,900.00 2500 ¥2,500.00 ...

tututu_jiang
25分钟前
2
0
shell编程(告警系统主脚本、告警系统配置文件、告警系统监控项目)

告警系统主脚本 先定义监控系统的各个目录,然后再去定义主脚本,因为是分布式的,所以需要每台机器都这样做,如果事先有创建好各个目录和各个脚本,那么就可以把这些目录和脚本copy到其他机...

蛋黄_Yolks
26分钟前
2
0
SAP HANA Backup and Recovery

SAP HANA Backup and Recovery Skip to end of metadata Created by Paul Power, last modified on Nov 23, 2017 Go to start of metadata Purpose System Privileges How to Perform a Back......

rootliu
27分钟前
2
0
JVM的持久代——何去何从?

本文会介绍一些JVM内存结构的基本概念,然后很快会讲到持久代,来看下Java SE 8发布后它究竟到哪去了。 基础知识 JVM只不过是运行在你系统上的另一个进程而已,这一切的魔法始于一个java命令...

java知识分子
44分钟前
2
0
Hive和HBase的区别

hive是文件的视图,hbase是建了索引的key-value表。 先放结论:Hbase和Hive在大数据架构中处在不同位置,Hbase主要解决实时数据查询问题,Hive主要解决数据处理和计算问题,一般是配合使用。...

飓风2000
51分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部