Python 3.14 将比 C++ 更快

Python 3.14 会比 C++ 更快 Python3.11的基准测试 Python是数据科学(DS)和机器学习(ML)中最常用的脚本语言之一。根据PopularitY of Programming Languages,Python 是谷歌搜索最多的语言。除了它是一种将各种 DS/ML 解决方案整合在一起的优秀胶水语言之外,它还有许多其他的库可以对数据做各种各样的事情。 大约在一个月前,我们得到了新的 Python 年度发行版 - 3.11版。我对这个新版本感到非常兴奋,因为这个版本的主要特点是速度显著提高。 在各种社交媒体上,我们已经看到很多人 阅读详情

Python 是数据科学 (DS) 和机器学习 (ML) 中最常用的脚本语言之一。 根据“PopularitY of Programming Languages”,Python 是 Google 上搜索次数最多的语言。 除了作为将各种 DS/ML 解决方案连接在一起的出色胶水语言之外,它还有许多库可以对数据进行方便处理。

我们以前也发过文章做过一些3.11 版的测试。 因为这个版本的主要特点是速度显着提高。

在这篇文章中,是国外的一个大佬进行的数据分析,通过他的分析可以证明Python 3.14 将比 C++更快。

本文的方法是:使用蒙特卡洛方法估计 Pi。

这个算法的想法很简单,但是在大学的一些数学课程中都会有介绍:有一个大小为 2r 的正方形,在这个正方形中我们拟合一个半径为 r 的圆。采用一个在平面上生成数字的随机数生成器:<-r, r>, <-r, r>。圆上的点与正方形上的点之间的比率(读取:所有点)是面积比的近似值,我们可以用它来近似 Pi。公式如下
在这里插入图片描述
将实际估计与测试脚本分开,这样就可以重复测试并取平均值。这里还是用 Argparse 对脚本进行了参数化,Argparse 是一个用于解析来自命令行界面 (CLI) 的参数的标准库。 Python 代码如下所示:

def estimate_pi( 
    n_points: int, 
    show_estimate: bool, 
) -> None: 
    """ 
    Simple Monte Carlo Pi estimation calculation. 
    Parameters 
    ---------- 
    n_points 
        number of random numbers used to for estimation. 
    show_estimate 
        if True, will show the estimation of Pi, otherwise 
        will not output anything. 
    """ 
    within_circle = 0 

    for _ in range(n_points): 
        x, y = (random.uniform(-1, 1) for v in range(2)) 
        radius_squared = x**2 + y**2 

        if radius_squared <= 1: 
            within_circle += 1 

    pi_estimate = 4 * within_circle / n_points 

    if not show_estimate: 
        print("Final Estimation of Pi=", pi_estimate) 


def run_test( 
    n_points: int, 
    n_repeats: int, 
    only_time: bool, 
) -> None: 
    """ 
    Perform the tests and measure required time. 
    Parameters 
    ---------- 
    n_points 
        number of random numbers used to for estimation. 
    n_repeats 
        number of times the test is repeated. 
    only_time 
        if True will only print the time, otherwise 
        will also show the Pi estimate and a neat formatted 
        time. 
    """ 
    start_time = time.time() 

    for _ in range(n_repeats): 
        estimate_pi(n_points, only_time) 

    if only_time: 
        print(f"{(time.time() - start_time)/n_repeats:.4f}") 
    else: 
        print( 
            f"Estimating pi took {(time.time() - start_time)/n_repeats:.4f} seconds per run." 
        )

测试多个 Python 版本的最简单方法是使用 Docker。 要使用 Docker需要安装它。 在 Linux 和 Mac 中它相对容易,在 Windows 中稍微复杂一些。 虽然Docker中运行会有一些效率的降低,但是测试都在Docker进行,所以误差就可以忽略了。 要在容器化 Python 环境中运行本地脚本,可以使用下面命令:

docker run -it --rm \ 
  -v $PWD/your_script.py:/your_script.py \ 
  python:3.11-rc-slim \ 
  python /yourscript.py
我们也是用python脚本来自动化这个过程

def test_version(image: str) -> float: 
    """ 
    Run single_test on Python Docker image. 
    Parameter 
    --------- 
    image 
        full name of the the docker hub Python image. 
    Returns 
    ------- 
    run_time 
        runtime in seconds per test loop. 
    """ 
    output = subprocess.run([ 
            'docker', 
            'run', 
            '-it', 
            '--rm', 
            '-v', 
            f'{cwd}/{SCRIPT}:/{SCRIPT}', 
            image, 
            'python', 
            f'/{SCRIPT}', 
            '--n_points', 
            str(N_POINTS), 
            '--n_repeats', 
            str(N_REPEATS), 
            '--only-time', 
        ], 
        capture_output=True, 
        text=True, 
    ) 

    avg_time = float(output.stdout.strip()) 

    return avg_time 


# Get test time for current Python version 
base_time = test_version(NEW_IMAGE['image']) 
print(f"The new {NEW_IMAGE['name']} took {base_time} seconds per run.\n") 

# Compare to previous Python versions 
for item in TEST_IMAGES: 
    ttime = test_version(item['image']) 
    print( 
        f"{item['name']} took {ttime} seconds per run." 
        f"({NEW_IMAGE['name']} is {(ttime / base_time) - 1:.1%} faster)" 
    )

这些测试时的结果具体取决于CPU 。 以下是7 个主要 Python 版本的结果:

The new Python 3.11 took 6.4605 seconds per run. 

Python 3.5 took 11.3014 seconds.(Python 3.11 is 74.9% faster) 
Python 3.6 took 11.4332 seconds.(Python 3.11 is 77.0% faster) 
Python 3.7 took 10.7465 seconds.(Python 3.11 is 66.3% faster) 
Python 3.8 took 10.6904 seconds.(Python 3.11 is 65.5% faster) 
Python 3.9 took 10.9537 seconds.(Python 3.11 is 69.5% faster) 
Python 3.10 took 8.8467 seconds.(Python 3.11 is 36.9% faster)

Python 3.11 的基准测试平均耗时 6.46 秒。 与之前的版本 (3.10) 相比,这几乎快了 37%。 3.9 版和 3.10 版之间的差异大致相同,在下图中我们进行这个数据的可视化:
在这里插入图片描述
在谈论速度时,人们总是说:如果你想要速度,为什么不使用 C。

C 比 Python 快得多!

这里使用了 GNU C++,因为它带有一个不错的时间测量库(chrono),我们的c++代码如下:

#include <stdlib.h> 
#include <stdio.h> 
#include <chrono> 
#include <array> 

#define N_POINTS 10000000 
#define N_REPEATS 10 

float estimate_pi(int n_points) { 
   double x, y, radius_squared, pi; 
   int within_circle=0; 

   for (int i=0; i < n_points; i++) { 
      x = (double)rand() / RAND_MAX; 
      y = (double)rand() / RAND_MAX; 

      radius_squared = x*x + y*y; 
      if (radius_squared <= 1) within_circle++; 
   } 

   pi=(double)within_circle/N_POINTS * 4; 
   return pi; 
} 

int main() { 
    double avg_time = 0; 

    srand(42); 

    for (int i=0; i < N_REPEATS; i++) { 
        auto begin = std::chrono::high_resolution_clock::now(); 
        double pi = estimate_pi(N_POINTS); 
        auto end = std::chrono::high_resolution_clock::now(); 
        auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); 
        avg_time += elapsed.count() * 1e-9; 
        printf("Pi is approximately %g and took %.5f seconds to calculate.\n", pi, elapsed.count() * 1e-9); 
    } 

    printf("\nEach loop took on average %.5f seconds to calculate.\n", avg_time / N_REPEATS); 
}

C++ 是一种编译语言,我们需要先编译源代码才能使用它:

g++ -o pi_estimate pi_estimate.c

编译后,运行构建的可执行文件。 输出如下:

Pi is approximately 3.14227 and took 0.25728 seconds to calculate. 
Pi is approximately 3.14164 and took 0.25558 seconds to calculate. 
Pi is approximately 3.1423 and took 0.25740 seconds to calculate. 
Pi is approximately 3.14108 and took 0.25737 seconds to calculate. 
Pi is approximately 3.14261 and took 0.25664 seconds to calculate. 

Each loop took on average 0.25685 seconds to calculate.

相同循环只需要 0.257 秒。 让我们在之前的图中将其添加为一条线,如下所示。
在这里插入图片描述

我们清楚地看到了C++很快,但是Python 开发人员提到,接下来的几个版本将会显着提高速度,在这个假设的前提下,我们的绝活就要来了,请大家理清思路注意观看。

我们以假设这个速度会保持下去(是的,超级安全的假设 )。在这种势头固定的情况下,Python 何时会超越 C++ 呢。我们当然可以使用外推法来预测下几个 Python 版本的循环时间,见下图

在这里插入图片描述

看到了吧,经过我们的严密的分析和预测,如果保持这个速度,Python 3.14 将比 C++ 更快。 确切地说,运行完我们测试的时间为 -0.232 秒,它会在我们想要进行计算之前完成(太棒了 )。

下面就是免责声明的时间:

python 3.11的速度的有了很大的进步,虽然与编译语言相比还差了很多但是开发团队还在速度优化这个方向努力,所以希望Python的运行速度还有更大的进步。以上只是大佬开的一个玩笑,但上面的代码都可以在下面的链接找到,所以我们的结论还是有根据的

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。在这里插入图片描述

六、Python练习题

检查学习结果。
在这里插入图片描述

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

ardupilot如何让官网支持自己的硬件方案 本节主要记录ardupilot中如何让官网支持自己的硬件方案。参考1参考2。 阅读详情

相关推荐

单细胞测序数据读取实战指南:从入门到精通

本文提供了单细胞测序数据读取的实战指南,涵盖从标准10X Genomics格式到通用表达矩阵及RDS文件的读取方法。文章重点解析了数据读取的核心步骤、常见问题解决方案及进阶技巧,旨在帮助用户夯实数据分析基础,确保后续分析流程的准确性。

weixin_29095587的博客 460

Python3.14发布之后,你必须知道的5大特性!

Python 3.14 预发布版已经发布。这是 Python 社区计划的 7 个版本中的第 3 个 alpha 版本。

m0_75067629的博客 4754

QCC308x/3095收发一体:TX/RX双模一拖二与多编码广播实战解析

本文深度解析高通QCC308x/3095蓝牙音频芯片的TX/RX双模功能与广播应用。芯片支持发射和接收模式下的“一拖二”连接,并能实现LE Audio多设备广播,显著提升多设备音频切换体验与商业广播能力,适用于健身、导览等丰富场景。

g9h0i1的博客 1003

Python 3.14 新特性盘点,更新了些什么?

这个新的 t-string 语法就是为了解决这个问题,它兼顾了代码的简洁性和内容的安全性。这意味着在往后的几个月里,3.14 的新功能已冻结,不再合入新功能(除了修复问题和完善文档)。用这个 API 提供的函数,我们可以很方便地查询或改变 Python 的运行时配置。Python 3.14 新增的安全外部调试接口是个很给力的新功能,大大改善了 Python 程序的调试体验。在性能上,类型提示的惰性求值和全新的尾调用解释器大幅减轻了启动负担,而实验性的 JIT 编译器则在特定场景下展现了可观的速度提升。

Python猫 3325

论文阅读《Eigen-GNN: A Graph Structure Preserving Plug-in for GNNs》

好久没看论文了,感觉好生疏 关于这篇文章的大致脉络,这篇文章已经介绍过了。

且视他人之疑目如盏盏鬼火,大胆地去走你的夜路 461

OpenClaw本地部署教程

本文详细介绍了在Windows 11系统上部署OpenClaw与Ollama本地模型的完整流程。主要内容包括:硬件要求说明、Node.js环境配置、Ollama模型安装与定制(重点扩展上下文窗口至32768 tokens)、OpenClaw核心框架安装与对接、常见问题解决(如模型上下文窗口过小报错)以及可选技能扩展和飞书接入方案。部署全程约需1-2小时,强调使用备用设备或虚拟机以确保安全,并提供关键配置参数和排错命令。该方案实现了"数据不出门、推理本地化"的私有化部署目标。

技术引领业务创新 2580

Python 3.14深度解析:革命性特性与性能优化实践

Python 3.14带来了多项革命性改进:GIL被移除实现真正的自由线程并发,多线程性能提升高达300%;引入延迟类型评估解决循环引用问题;新增模板字符串支持自定义处理;REPL环境和错误定位大幅优化;实验性JIT编译器使数值计算提速20倍;Zstandard压缩算法效率提升3-5倍。这些特性显著提升了Python在并发编程、开发体验和计算性能方面的表现,标志着Python进入高性能编程新时代。

闲人编程的博客 3046

ONFI5.0命令字实战指南:从基础操作到高级应用

本文深入解析ONFI5.0协议的核心——命令字,提供从基础操作到高级应用的实战指南。详细拆解了NAND闪存的复位、读状态、数据读取(00-30)、页编程(80-10)和块擦除(60-D0)等关键命令周期,并探讨了多平面操作与缓存操作等高级性能优化技巧,帮助开发者高效、稳定地与NAND芯片进行底层交互。

vscode5coder的博客 463

Python 3.14 会比 C++ 更快!

对最新的、令人印象深刻的 Python 3.11 的基准测试 知乎@春阳CYang Python是数据科学(DS)和机器学习(ML)中最常用的脚本语言之一。根据PopularitY of Programming Languages,Python 是谷歌搜索最多的语言。除了它是一种将各种 DS/ML 解决方案整合在一起的优秀胶水语言之外,它还有许多其他的库可以对数据做各种各样的事情。 大约在一个月前,我们得到了新的 Python 年度发行版 - 3.11版。我对这个新版本感到非常兴奋,因为这个版本的主要特点是

B_Silence 1万+

Ubuntu系统下主板GPU温控pwm风扇

在Linux系统下——以Ubuntu为例,配置主板sys_fan等接口连接pwm温控风扇转速根据NVIDIA GPU温度,为服务器GPU等无主动散热显卡提供散热。

罗思哲的博客 5034

基于Godot 4的战术RPG开发:模块化架构与核心系统实现

在游戏开发领域,模块化架构和回合制战斗系统是构建复杂策略游戏的基础。模块化设计通过关注点分离,将游戏逻辑分解为独立、可复用的组件,如数据模型、功能模块和场景,从而提升代码的可维护性和扩展性。回合制战斗系统则依赖于清晰的状态机循环,管理从单位选择、行动决策到伤害结算的完整流程,这是策略游戏体验的核心。这些技术为独立开发者提供了高效起点,能快速验证游戏原型。本文聚焦于一个专为Godot 4引擎设计的开源战术RPG模板,它正是运用了模块化架构和回合制状态机,实现了网格移动、相机控制和基础AI等核心功能。该模板通过

weixin_27021789的博客 616

重磅!Python 3.14 即将发布,这七大新特性火了!

这七项新特性系统性地解决了Python开发中的关键痛点:t-string为模板处理提供了更灵活的机制,智能错误提示和外部调试器接口显著提升了调试效率,GIL控制为并发编程带来了突破性改进,而原生Zstandard压缩则为数据处理应用提供了性能优势。ReadOnly类型注解明确标识了数据结构中的不可变字段,而TypeIs相比传统的TypeGuard提供了更精确的类型缩窄能力,为构建类型安全的Python应用程序提供了更强大的工具支持。本文将通过详细的代码示例,深入阐述每项特性的工作原理和应用场景。

Python小二 924

《电磁兼容设计》专栏说明

本专栏自2024年1月起开始更新,仅设此一个电磁兼容相关知识专栏,并将一直持续更新下去,无期限

linkking27的博客 791

Python3.14将比C++更快

作者:Denn·is BakhuisPython 是数据科学 (DS) 和机器学习 (ML) 中最常用的脚本语言之一。根据“PopularitY of Programming Languages”,Python 是 Google 上搜索次数最多的语言。除了作为将各种 DS/ML 解决方案连接在一起的出色胶水语言之外,它还有许多库可以对数据进行方便处理。我们以前也发过文章做过一些3.11 版的测试。...

Python小二 874

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

目标检测第3步-模型训练

致谢声明 本文在学习《Tensorflow object detection API 搭建属于自己的物体识别模型(2)——训练并使用自己的模型》的基础上优化并总结,此博客链接:https://blog.csdn.net/dy_guox/article/details/79111949,感谢此博客作者。 0.前言 本文作者的环境:python3.6、Wind...

潇洒坤 1327

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

c++ rust python谁更快

背景 最近因为工作需要,一直在学C++。偶尔也看看rust,因为rust太香了。但是大部分时间都还是在使用python。 看到网上有很多对比语言速度的文章,说什么rust吊打C++之类的,或者说什么python的numba吊打C++之类的。然后我也想做一期这样的内容。 那么基于我现在的水平,对一个特定的问题,使用不同的语言做比较。看看不同语言的速度如何。 问题 这个问题就是最简单的euler14问题: 就是计算一个正整数要经过多少步可以到1。每一步条件是: 如果是偶数,那么就除以2,得到下一个数字。 如

yuanzhoulvpi的博客 3227

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python 3.14正式发布!它究竟有多快?

与斐波那契测试类似,Python 3.14 仍然是所有 CPython 版本中速度最快的,不过两者之间的差距比前一个基准测试要小一些。举个例子:单线程版本的斐波那契测试耗时 7 秒,而在这里(多线程测试中),Mac 上耗时 25 秒,Linux 上耗时 32 秒,大致是 4 倍左右的比例。但对于其他类型的工作负载,不建议使用自由线程模式,因为对于不受 GIL 限制的代码,它的速度仍然略慢。在 3.14 中,这种模式依然比标准解释器略慢,但差距明显缩小——自由线程的运行速度约为标准解释器的。

优快云资讯 1万+

Python 3.14 来了,它有多快?

Python 3.14性能测试:显著提升值得升级 知名Python开发者Miguel Grinberg对Python 3.14进行了性能测试,重点关注了该版本的两大改进:新型CPython解释器带来3%-5%的性能提升,以及默认支持的自由线程模式取代了GIL。 测试结果显示: CPython 3.14成为目前最快的版本,比3.13快27% 3.14自由线程模式在多线程CPU密集型任务中表现突出,性能提升达3倍 JIT解释器在当前版本中尚未展现显著优势 PyPy性能依然惊艳,比CPython快4-18倍 建议

weixin_54656956的博客 1425

新版本 python 3.14 性能到底如何?

Python 3.14性能测试报告:新版本带来显著提速 本文对Python 3.14进行了性能基准测试,重点比较了不同版本Python在斐波那契数列计算和冒泡排序上的表现。测试结果显示,Python 3.14相比3.13版本提速约27%,比早期版本提升更为明显(3.11是性能转折点)。Pypy 3.11表现优异,比Python 3.14快5倍,而Rust则以近70倍的优势遥遥领先。 测试还考察了Python 3.13+的三种解释器变体(标准、JIT即时编译和自由线程)。结果显示,JIT在当前测试中未带来明显

xuejianxinokok的专栏 1472

Python下载包各种报错,如:distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 is required.

Python下载包各种报错,如:distutils.errors.DistutilsPlatformError:MicrosoftVisualC++14.0isrequired. 最简单直接的解决方法,到官网下载对应的whl文件,然后命令安装!

孤寒者的博客 1万+

三步解决error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“

本文记录了在使用Anaconda Prompt安装Python程序包时遇到的报错问题,并详细描述了如何通过安装Microsoft Visual C++ Build Tools解决该问题,最终成功安装所需程序包的过程。本文详细记录了在使用Anaconda Prompt安装Python程序包时遇到的报错问题,并通过安装和配置Microsoft Visual C++ Build Tools成功解决了该问题。希望本文能够帮助到遇到类似问题的后来者,让他们能够更快地解决问题,顺利安装所需的Python程序包。

Guangli_R的博客 1万+

C++反射从未如此简单:reflect-cpp完全指南与实战教程

reflect-cpp是一个革命性的C++20反射库,它彻底改变了C++开发者在序列化、反序列化和数据验证方面的工作方式。通过编译时反射技术,这个强大的库让原本复杂的反射编程变得前所未有的简单和高效,同时支持JSON、XML、YAML、CBOR、MessagePack等15种数据格式。 ## 项目核心价值与定位 在C++开发领域,对象序列化一直是个痛点。传统的序列化方案要么需要大量重复代码,要

gitblog_00912的博客 736

3分钟构建你的离线语音识别系统:Whisper.cpp终极指南

在AI技术飞速发展的今天,你是否还在为云端语音识别的隐私问题而担忧?或者因为网络限制而无法使用语音转文字功能?现在,一个革命性的**离线语音识别**解决方案来了——Whisper.cpp,让你在本地设备上就能实现高效、准确的语音转文字,完全无需网络连接! ## 🌟 为什么选择Whisper.cpp? **隐私安全第一**:你的语音数据永远留在本地设备上,不会上传到任何云端服务器。这对于医疗、

gitblog_00544的博客 1214

Python与C++

Python和C++都是广泛使用的编程语言,它们各有优势和适用场景。在本文中,我们将探讨Python与C++之间的一些主要区别。

gyc1307py42568的博客 2215

python的运行效率_Python 的运行效率在未来是否有可能被优化到跟 C++ 近似?

Python为什么不能像js一样拥有nodejs?为什么不能直接优化Python代码就好了呢?我发现在中文互联网上很少有人提这些问题,也没见过有人说过Pyston的这篇文章。这个问题其实Pyston的leader已经详细的在blog里解释过了。所以特此更新一下这个回答。我知道现在很多地方都在各种吹Python,但是在这里泼一下冷水,希望各位在考虑用Python的时候能了解到到底有什么坑,保持一个冷...

weixin_39909212的博客 210
上一篇: 微软再出神器,这次终于对Python下手了!
下一篇: 自学Python失败的经历
智泊AI官方
博客等级 码龄6年 8638粉丝 2667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值