文档章节

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

aszhou
 aszhou
发布于 2017/07/22 17:16
字数 388
阅读 6
收藏 0
点赞 0
评论 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

HashMap循环遍历方式及其性能对比

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

闪电 ⋅ 2016/05/11 ⋅ 0

Kqueue 实现非阻塞 Socket 通信

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

xh4n3 ⋅ 2015/11/03 ⋅ 0

【原创】Python 之快速性能优化(第二部分)

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

摩云飞 ⋅ 2013/11/19 ⋅ 0

对一个数组 FILTER、SOME、MAP、FOREACH的操作分别有什么作用?

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

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

12- 深度学习之神经网络核心原理与算法-Softmax

softmax 输出层的激励函数softmax 前面我们已经接触了一种激励函数,sigmoid函数。含义: 似然度 https://www.zhihu.com/question/35322351/answer/67193153 全连接层和输出层相连接,输出分类...

天涯明月笙 ⋅ 05/31 ⋅ 0

2.基本概念和顺序编程

一. erlang学习各阶段 1.erlang常用模块:lists、io、file、dict、gentcp等 2.makefile自动编译模块 3.erlang扩展库 OTP 特别是genserver 4.用erlang编写分布式程序 5.Mnesia 数据库 6.与其它...

sinpo ⋅ 2012/02/29 ⋅ 0

PHP APM对比评测:OneAPM, New Relic, 听云

感谢@penguinz 的推荐,又发现了一家提供应用性能管理服务的国内厂商:“听云”,看了斯人-吴帅写的试用笔记,才了解到国外的应用性能管理厂商New Relic才是真正APM大牛,产品线覆盖非常全面...

phpfans15 ⋅ 2015/04/01 ⋅ 11

MQTT---HiveMQ源码详解(外传)为什么使用Xodus

既然要考虑为什么使用,那么我们应该从这么几点来去分析这个问题。 1、原始需求是什么? 2、现有框架/产品。 3、对比匹配一个。 原始需求是什么? 功能方面: 性能方面: 现有框架/产品 redis ...

西安PP ⋅ 2017/10/22 ⋅ 0

Python 进阶语法四 —— Map、Filter和Reduce

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

东方神剑 ⋅ 2016/11/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

代码注释中顺序更改 文件读写换行

`package ssh; import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils; import java.io.*; public class DirErgodic ......

林伟琨 ⋅ 23分钟前 ⋅ 0

linux实用操作命令

参考 http://blog.csdn.net/qwe6112071/article/details/50806734 ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 同-a,但不列出"."和"...

简心 ⋅ 39分钟前 ⋅ 0

preg_match处理中文符号 url编码方法

之前想过直接用符号来替换,但失败了,或者用其他方式,但有有些复杂,这个是一个新的思路,亲测可用 <?php$str='637朗逸·超速新风王(300)(白光)'; $str=iconv("UTF-8","GBK",$s...

大灰狼wow ⋅ 51分钟前 ⋅ 0

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。 作者: Tony Baer 原文: Has the time finally come for PostgreSQL?(有删节) 近30年来 PostgreSQL 无疑是您从未听...

RiboseYim ⋅ 54分钟前 ⋅ 0

Cube、Cuboid 和 Cube Segment

1.Cube (或Data Cube),即数据立方体,是一种常用于数据分析与索引的技术;它可以对原始数据建立多维度索引。通过 Cube 对数据进行分析,可以大大加快数据的查询效率 2.Cuboid 在 Kylin 中特...

无精疯 ⋅ 今天 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 今天 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 今天 ⋅ 0

云计算的选择悖论如何对待?

人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为...

linux-tao ⋅ 今天 ⋅ 0

Redis 注册为 Windows 服务

Redis 注册为 Windows 服务 redis 注册为 windows 服务相关命令 注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 启动服务 re......

Os_yxguang ⋅ 今天 ⋅ 0

世界那么大,语言那么多,为什么选择Micropython,它的优势在哪?

最近国内MicroPython风靡程序界,是什么原因导致它这么火呢?是因为他功能强大,遵循Mit协议开源么? 错!因为使用它真的是太舒服了!!! Micropython的由来,这得益于Damien George这位伟大...

bodasisiter ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部