文档章节

PyPy 与 Python 的一个小 timeit (二)

水果糖
 水果糖
发布于 2016/05/09 23:30
字数 262
阅读 22
收藏 1


前面做了PyPy 与C Python 对比;


这次了解到有个叫nuitka 的玩意存在,号称“将Python 无缝 转换成C++(100%)”;


既然如此叼? 好的,Candy特意编译了一个 Python2.7.11 安装好nuitka 后进行编译。

代码与

[root@server ~]# time ./demo.exe

real    0m22.646s
user    0m22.632s
sys     0m0.007s
[root@server ~]#


 经过此役后,发现user对比 C Python 性能提升2倍,但是还是比不上PyPy的优化程度。



让我们再来看一段代码,abc.py 的代码如下:

def test(n,m):
    m=m
    vals = []
    keys = []
    for i in xrange(m):
        vals.append(i)
        keys.append('a%s'%i)
    d = None
    for i in xrange(n):
        d = dict(zip(keys, vals))
    return d
if __name__ == '__main__':
    test(1000000,100)



Python 2.7:

[root@server ~]# time python2.7 abc.py

real    0m11.284s
user    0m11.270s
sys     0m0.012s


PyPy:

[root@server ~]# time pypy abc.py

real    0m9.997s
user    0m6.752s
sys     0m1.549s



nuitka :

[root@server abc.dist]# time ./abc.exe

real    0m10.717s
user    0m10.707s
sys     0m0.006s



具体使用化解,请大家自行斟酌! 


这里只给出了一个针对性、专业性不是非常强的测试,很多情况也没考虑到;细节方面,还请各位自己测试。



© 著作权归作者所有

共有 人打赏支持
水果糖
粉丝 15
博文 157
码字总数 52251
作品 0
深圳
程序员
python 计算函数运行时间

使用timeit模块 测试一段代码的运行时间,在python里面有个很简单的方法,就是使用timeit模块,使用起来超级方便 下面简单介绍一个timeit模块中的函数 主要就是这两个函数: 1, timeit(stmt...

阿豪boy
2017/11/02
0
0
Python丨Python 性能分析大全

虽然运行速度慢是 Python 与生俱来的特点,大多数时候我们用 Python 就意味着放弃对性能的追求。但是,就算是用纯 Python 完成同一个任务,老手写出来的代码可能会比菜鸟写的代码块几倍,甚至...

太阳代理
2017/11/07
0
0
python 装饰器@ 面向切面的编程

装饰器@ 面向切面的编程 参考 import timedef foo():print 'this is foo' def timeit(func):start = time.clock()func()end = time.clock()print 'used time : ', (end-start) timeit(foo) ......

okker
2014/03/04
0
0
设计模式之:理解 Python 中的装饰器

1、问题 文章先由stackoverflow上面的一个问题引起吧,如果使用如下的代码: @makebold @makeitalic def say(): return "Hello" 打印出如下的输出: <b><i>Hello<i></b> 你会怎么做?最后给出......

大数据之路
2013/07/22
0
0
Python3 vs. Python2 大作战,谁将是性能之王?

文章来自开源中国(微信ID:oschina2013) 责编:OSC-达尔文 如需转载请注明上述来源,其他来源无效并视为侵权 哪个版本的 Python 最快? 当然,这些问题由多种因素决定,其中的主要的因素是...

开源中国
07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
今天
0
0
HBase 表修复在线方式和离线方式

一、在线修复 1.1 使用检查命令 $ ./bin/hbase hbck 该命令可完整修复 HBase 元数据信息;存在有错误信息会进行输出; 也可以通过如下命令查看详细信息: $ ./bin/hbase hbck -details 1.2 ...

Ryan-瑞恩
今天
3
0
redis 系列二 -- 常用命令

1.基础命令 info ping quit save dbsize select flushdb flushall 2.键命令 2.1 set 直接赋值 set a a 2.2 get 取值 get a 2.3 exists 是否存在 exists a 2.4 expire 设置剩余时间 秒 expire......

imbiao
今天
2
0
php foreach

<?php// 数组的引用$a=array(1,2,3,4,5);foreach($a as $key=>&$value){$value=$value*2;}print_r($a);echo " $key -------------------$value\r\n";/** * ...

小张525
今天
3
0
12-利用思维导图梳理JavaSE-多线程

12-利用思维导图梳理JavaSE-多线程 主要内容 1.线程概念 2.线程开发 3.线程的状态 4.线程的同步和死锁 5.Java5.0并发库类 QQ/知识星球/个人WeChat/公众号二维码 本文为原创文章,如果对你有一...

飞鱼说编程
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部