pypy的速度

无聊作PE http://projecteuler.net/problem=10 , 求2百万以下数的所有数的总和

python 随便写了一个

big = 2000000
import time

plst = [2, 3, 5, 7, 11, 13]
t1 = time.time()
for i in xrange(17, big, 2):
    for p in plst:
        if i%p == 0:
            break
        if p*p > i:
            plst.append(i)
            break

print time.time() - t1
#print len(plst)
print sum(plst) 

然后

$ python peuler10.py 
12.4184100628
142913828922

太慢了,不能忍受,用C试了下:

#include <stdio.h>
#include <time.h>

int main(void)
{
    clock_t begin, end;
    unsigned long big = 2000000;
    unsigned long pl[150000] = {2,3,5,7,11,13};
    unsigned long i = 0;
    unsigned int max = 6;
    begin = clock();
    for(i=17;i<big;i+=2){
        int j = 0;
        while(1){
            if(i%pl[j] == 0)
                break;
            if(pl[j] * pl[j] > i){
                pl[max] = i;
                max += 1;
                break;
            }
            j += 1;

        }

    }
    big = 0;
    for(i=0; i < max; i++){
        big += pl[i];
    }
    end = clock();
    double cost = (double)(end - begin)/CLOCKS_PER_SEC;
    printf("%ld\n", big);
    printf("%lf seconds\n", cost);

}

$ ./a
142913828922
0.750000 seconds

这差距实在是太大了, 又祭起pypy试试:

$ pypy peuler10.py -0jit
0.665678977966
142913828922

竟然比C还快。

pypy是python的一线希望,就是那些扩展不知道怎么办。好像很多脚本语言都有如是困境, PHP有最近facebook搞出的HipHop解释器,js因为V8现在势头正猛,不过都还有一定差距。还是更看好go,go也比较合我口味。

### PyPy 的简介与特点 PyPy 是一种兼容 Python 的替代实现,旨在通过即时编译(JIT Compilation)技术提高程序运行速度。它不仅支持标准的 CPython 解释器功能,还提供了内存管理和垃圾回收等方面的优化[^3]。 以下是关于 PyPy 的安装和配置指南: --- ### PyPy 的安装方法 #### 1. 下载 PyPy 访问官方下载页面获取适合操作系统的版本: - 官方网站: https://www.pypy.org/download.html - 根据操作系统选择对应的二进制文件并下载。 对于 Linux 和 macOS 用户,可以使用以下命令直接下载最新版: ```bash wget https://downloads.python.org/pypy/pypy3-latest-linux64.tar.bz2 tar xf pypy3-latest-linux64.tar.bz2 cd pypy3.9-v7.3.10-linux64/ ``` Windows 用户可以从官网手动下载 `.zip` 文件并解压到目标目录。 #### 2. 配置环境变量 将 PyPy 可执行路径添加到系统 `PATH` 中以便全局调用。例如,在 Linux/macOS 上编辑 `.bashrc` 或 `.zshrc` 文件: ```bash export PATH=/path/to/pypy:$PATH ``` 在 Windows 上,则需通过“系统属性 -> 环境变量”界面修改 `Path`。 验证安装成功与否可以通过以下命令完成: ```bash pypy --version ``` 如果显示类似如下信息则表示已正确安装: ``` Python 3.8.12 (c5b3f7e, Oct 15 2021, 19:45:45) [PyPy 7.3.7 with GCC 10.2.0] ``` --- ### 虚拟环境设置 尽管可以直接使用 PyPy 运行脚本,但在实际开发过程中推荐创建独立的虚拟环境来管理依赖项。具体步骤如下所示: #### 创建虚拟环境 利用内置工具 `virtualenv` 构建专属空间: ```bash pypy -m venv my-pypy-env ``` 激活该虚拟环境: - **Linux/Mac**: ```bash source my-pypy-env/bin/activate ``` - **Windows**: ```cmd my-pypy-env\Scripts\activate ``` 此时终端提示符前缀会变为 `(my-pypy-env)` 表明当前处于指定环境中。 #### 更新 pip 工具链 进入新建立好的虚拟环境下升级包管理器至最新状态以确保后续流程顺畅无阻塞现象发生。 ```bash pip install --upgrade pip setuptools wheel ``` --- ### 测试 PyPy 性能优势 为了直观感受 PyPy 带来的性能提升效果,可编写一段简单的循环计算代码对比两者差异情况如何变化发展下去呢?下面给出一个例子供参考学习之用: ```python import time def compute(): result = [] for i in range(1_000_000): result.append(i * i % 12345) return sum(result) start_time = time.time() res = compute() end_time = time.time() print(f"Result={res}, Time taken={(end_time - start_time):.4f} seconds") ``` 分别采用原生 CPython 和刚装好后的 PyPy 来跑这段测试逻辑看看耗时长短区别吧! --- ### 注意事项 虽然 PyPy 提供了许多优点,但也存在一些局限性需要注意的地方比如某些扩展模块可能无法正常工作等问题需要提前做好心理准备才行哦!更多详情请查阅其官方文档链接地址为:https://doc.pypy.org/en/latest/index.html[^4] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值