文档章节

摘抄 python dict() 比 {} 慢6倍左右

回忆书签
 回忆书签
发布于 2012/11/16 09:54
字数 270
阅读 366
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>


看了一个叫 doug hellmann 的哥们儿写的博文

在python2.7中  dict() 函数方式生成字典比直接{}要慢6倍。

实验代码


$ python2.7 -m timeit -n 1000000 -r 5 -v 'dict()'
raw times: 0.24 0.24 0.24 0.239 0.24
1000000 loops, best of 5: 0.239 usec per loop

$ python2.7 -m timeit -n 1000000 -r 5 -v '{}'
raw times: 0.0417 0.0413 0.0407 0.0411 0.042
1000000 loops, best of 5: 0.0407 usec per loop

我在自己机器上试了下,由于是windows 要把单引号换成双引号 ,结果一样。

C:\Users\xxxx>python -m timeit -n 1000000 -r 5 -v "dict()"

raw times: 0.195 0.194 0.193 0.191 0.191
1000000 loops, best of 5: 0.191 usec per loop


C:\Users\xxxx>python -m timeit -n 1000000 -r 5 -v "{}"
raw times: 0.0455 0.0468 0.0463 0.0462 0.0466

1000000 loops, best of 5: 0.0455 usec per loop


原因大概也能猜到,函数要进出栈操作,而{} 有直接对应的指令:

dict()


$ python2.7 -m dis func.py
  1           0 LOAD_NAME                0 (dict)
              3 CALL_FUNCTION            0
              6 POP_TOP
              7 LOAD_CONST               0 (None)
             10 RETURN_VALUE

{}

python2.7 -m dis literal.py
  1           0 BUILD_MAP                0
              3 POP_TOP
              4 LOAD_CONST               0 (None)
              7 RETURN_VALUE

这下就了然了。


原文:

http://www.doughellmann.com/articles/misc/dict-performance/index.html?utm_source=Python+Weekly+Newsletter&utm_campaign=327c79cf35-Python_Weekly_Issue_61_November_15_2012&utm_medium=email

本文转载自:http://www.doughellmann.com/articles/misc/dict-performance/index.html?utm_source=Python+Weekly+Ne...

回忆书签
粉丝 0
博文 23
码字总数 3350
作品 0
海淀
项目经理
私信 提问
python的memcache模块连接速度测试

三者区别: python-libmemcached:是对libmemcached接口的封装,pypi上至今还是dev版,豆瓣以前对此修改使用。 pylibmc:也是对libmemcached接口的封装。 python-memcache:是纯python实现(...

toil
2015/01/16
1K
0
谁是速度之王(Python vs JavaScript)?

Python 是个比较成熟的语言,运行速度在几年前是快于 JavaScript 的。但这些年 JavaScript 的解释器发展很快,特别是 Google 的 V8 和 Mozilla 的 SpiderMonkey, 将 JavaScript 的运行速度提...

开心303
2012/03/20
4.1K
0
用python实现新词发现程序——基于凝固度和自由度

python学习笔记整理于猿人学网站的python教程和python爬虫 互联网时代,信息产生的数量和传递的速度非常快,语言文字也不断变化更新,新词层出不穷。一个好的新词发现程序对做NLP(自然预言处...

呆木木人儿
03/04
59
0
Go vs Swift vs C++ 简单微型基准比较测试

我之前阅读过一篇比较的文章 Swift vs Go vs Python battle,但觉得时间太老了,这是在一年前写的,某种意义上说,一年时间太长了。 因此我决定在我的 Mac 笔记本 (1.7 GHz Intel Core i5) ...

红薯
2016/02/22
6K
12
Speed-up with Cython and Numpy in Python

Cython代码和Python代码区别 代码运行在IPython-Notebook中,在IPython-Notebook中导入cython环境。 1 %load_ext cython Cython可以在Python中掺杂C和C++的静态类型,cython编译器可以把Cyt...

Arthurcsh
2017/10/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端入门到实战:图解原生dialog标签(非常详细)

在html5中,新增了很多语义化的标签。如footer、header之类的,今天的主角是dialog标签 顾名思义,就是用来定义对话框的。目前只有Chrome和Safari支持该标签,所以用的不多,不过确实挺好用的...

梦想编程
23分钟前
3
0
一些php常用函数积累

本文链接<?php// id: ecffe70d3af54df9bad97b61918ace7d global $ct_path, $ct_log_path;$log_path = "test_php.txt";// 是否先log到buffer,再通过CT_flush()一次性写入文件$......

一字见心
24分钟前
3
0
IntelliJ idea中 注释代码折叠

visual studio中有#region 可以折叠代码,IntelliJ idea 中也有类似功能 //region 描述代码//endregion

format
24分钟前
4
0
oracle表中更改主键

一、数据表有主键但无主键约束名 先删除之前的主键,后添加主键 ,执行SQL: a. alter table 表名 drop primary key; b. alter table 表名 add primary key(想要更改的字段名称); 二、数据表...

_Somuns
26分钟前
3
0
jQuery AJAX提交表单

我有一个名称为orderproductForm的表单,输入的数量不确定。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送所有形式为orderproductForm的输入。 我想一种方法是做类...

技术盛宴
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部