数学之路-python计算实战(2)-初遇pypy
PyPy是Python开发人员为了更好的Hack Python创建的项目。此外,PyPy比CPython是更加灵活,易于使用和试验,以制定详细的功能在不同情况的实现方法,能够非常easy实施。 该项目的目标是,让PyPy比C实现的Python更为easy的适应各个项目和方便裁剪。
PyPy的第一部分:用Python实现的Python
事实上这么说并不准确,准确得说应该是用rPython实现的Python。rPython是Python的一个子集,尽管rPython不是完整的Python,但用rPython写的这个Python实现却是能够解释完整的Python语言。
PyPy的第二部分:编译器
这是一个编译rPython的编译器,或者说这个编译器有一个rPython的前端。眼下也仅仅有这么一个前端。只是它的后端却是不少。也就是说这个编译器支持很多的目标语言,比較重要的有:C。CIL。Javascript ...
PyPy还提供了JIT编译器和沙盒功能。因此执行速度比CPython要快。以及能够安全的执行一些不被信任的代码。
PyPy另一个单独的支持微线程的版本号。这些都是python的弱项,pypy是神器
下面面程序为例:
import time
start=time.clock()
sum=0
i=1.0
while (i<10000000):
sum+=i/2.22
i=i+1
print "sum:%f"%sum
end = time.clock()
print "seconds:%f"%sum
本博客全部内容是原创。假设转载请注明来源
http://blog.csdn.net/myhaspl/
执行上面程序
deep@myddb:~$ python pythontest.py
sum:22522520270270.273438
seconds:4.090000
deep@myddb:~$ ./pypy pythontest.py
sum:22522520270270.273438
seconds:0.256000
deep@myddb:~$
效果非常不错,让人惊讶
上面程序用到下面函数:
On Unix, return the current processor time as a floating point number expressed in seconds. The precision, and in fact the very definition of the meaning of “processor time”, depends on that of the C function of the same name, but in any case, this is the function to use for benchmarking Python or timing algorithms.
Python的标准库手冊推荐在不论什么系统下都尽量使用time.clock()。
只是要注意是在win32系统下,这个函数返回的是真实时间(wall_time),而在Unix/Linux下返回的是CPU时间,不包含其它程序使用的CPU时间。
只是与C还是有差距的,可是已经非常不错的。相比cpython来说。
deep@myddb:~$ gcc pythontest.c -o test1
deep@myddb:~$ ./test1
sum = 22522520270270.273438
seconds = 0.080000 s
deep@myddb:~$ ./pypy pythontest.py
sum:22522520270270.273438
seconds:0.236000
deep@myddb:~$
pythontest.c程序例如以下:
#include <TIME.H>
#include <STDIO.H>
int main(){
long Time_Start = 0,Time_End = 0;
double Time_Total = 0.0;
double i = 1.0;
double sum = 0.0;
Time_Start = clock();
while(i<10000000){
sum += (double)i/2.22;
i = i+1;
}
Time_End = clock();
Time_Total = (double)(Time_End-Time_Start)/CLOCKS_PER_SEC;
printf("sum = %f\n",sum);
printf("seconds = %f s\n",Time_Total);
return 0;
}
数学之路-python计算实战(2)-初遇pypy的更多相关文章
- 数学之路-python计算实战(21)-机器视觉-拉普拉斯线性滤波
拉普拉斯线性滤波,.边缘检測 . When ksize == 1 , the Laplacian is computed by filtering the image with the follow ...
- 数学之路-python计算实战(17)-机器视觉-滤波去噪(中值滤波)
Blurs an image using the median filter. C++: void medianBlur(InputArray src, OutputArray dst, int ks ...
- 数学之路-python计算实战(5)-初识numpy以及pypy下执行numpy
N .有用的线性代数.傅里叶变换和随机数生成函数.numpy和稀疏矩阵运算包scipy配合使用更加方便.NumPy(Numeric Python)提供了很多高级的数值编程工具,如:矩阵数据类型.矢量处 ...
- 数学之路-python计算实战(20)-机器视觉-拉普拉斯算子卷积滤波
拉普拉斯算子进行二维卷积计算,线性锐化滤波 # -*- coding: utf-8 -*- #线性锐化滤波-拉普拉斯算子进行二维卷积计算 #code:myhaspl@myhaspl.com impor ...
- 数学之路-python计算实战(15)-机器视觉-滤波去噪(归一化块滤波)
# -*- coding: utf-8 -*- #code:myhaspl@myhaspl.com #归一化块滤波 import cv2 import numpy as np fn="tes ...
- 数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)
我们来看一个灰度图像,让表示灰度出现的次数,这样图像中灰度为 的像素的出现概率是 是图像中全部的灰度数, 是图像中全部的像素数, 实际上是图像的直方图,归一化到 . 把 作为相应于 的累计概率 ...
- 数学之路-python计算实战(19)-机器视觉-卷积滤波
filter2D Convolves an image with the kernel. C++: void filter2D(InputArray src, OutputArray dst, int ...
- 数学之路-python计算实战(9)-机器视觉-图像插值仿射
插值 Python: cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst interpolation – interpol ...
- 数学之路-python计算实战(4)-Lempel-Ziv压缩(2)
Format characters have the following meaning; the conversion between C and Python values should be o ...
随机推荐
- 二、Mongo命令初识
简单介绍mongo的一些基本命令 1. 连接与登陆mongo 在命令行输入“mongo”命令即可登陆Mongo数据库(PS:默认讨论被信任的环境,也就是不需要用户名和密码进行登陆). 查看当前所使 ...
- 17.1.1 How to Set Up Replication
17.1.1 How to Set Up Replication 17.1.1.1 Setting the Replication Master Configuration 17.1.1.2 Sett ...
- cocos2d-x游戏开发系列教程-超级玛丽01-前言
前言 上次用象棋演示了cocos2dx的基本用法,但是对cocos2dx并没有作深入的讨论,这次以超级马里奥的源代码为线索,我们一起来学习超级马里奥的实现,并以一些篇幅来详细讲述遇到的具体问题和具体的 ...
- Json也可以这么使
public string GetJSON() { //Json数据 string json112 = "{\"control_info\":{\"imei\& ...
- USB中CDC-ECM的了解和配置
USB中典型类及子类: 类别 解释 子类 典型应用 IC芯片 备注 UVC 视频类 免驱USB摄像头 CDC 通讯类 RNDIS ECM(p24) 免驱USB网卡 RTL8152B EEM ..... ...
- ADO.NET 对象 结构图
- C语言,题目:函数调用,内存,malloc找错
malloc int* p = (int *) malloc (sizeof(int)*128); //分配128个(可根据实际需要替换该数值)整型存储单元,并将这128个连续的整型存储单元的首地址存 ...
- Eclipse用法和技巧二十八:Eclipse插件Easy Explore的今世
先说明一下easyexplore插件的功能,easyexplore是一个类似于 Windows Explorer的Eclipse插件,它可以帮助你在不退出Eclipse的环境下迅速浏览本地文件系统. ...
- 用Photoshop做圆角图片
如果图片被锁定,请“双击”图层中“背景”解锁,如果没有图层菜单,在最上面导航栏中:窗口—图层. 选用“圆角矩形工具“ 设置圆角弧度大小,设置“半径” 19 同时按Ctrl+回车(Enter)选区,再C ...
- 配置用户范围settings.xml
Maven用户可以选择配置<<MavenHome>>/conf/settings.xml或者<<UserHome>>/.m2/settings.xml. ...