为什么Python比C++慢很多?

本文探讨了Python比C++慢的原因,通过对比Python和C++实现的八皇后问题DFS,指出Python的逐句解释执行、动态类型检查等因素导致性能差异。实验表明,使用PyPy的JIT编译器可以显著提升Python代码的执行效率,接近C++的性能。文章最后提到,通过numba等工具进一步优化,Python代码甚至能在某些情况下超越C++的性能。
摘要由CSDN通过智能技术生成

话说为什么大家会集中讨论GIL?在这里题主的标准线是一个按bit处理的单线程DFS啊……几乎没有GIL发挥的余地好么……

这个八皇后的DFS,我的C++代码在不加某些评估性剪枝的情况下对15需要算18s左右(开O2大约8.6秒,与题主描述基本一致),但是可以确定的是你的解决方案里用了循环与递归。接下来需要分析的无非是Python慢在哪个细节,以及能否改进的问题。

下面是两段用来测试的代码,首先是Python的:

class="highlight">

#!/usr/bin/env python3
​
import time
​
def calc(n, i=0, cols=0, diags=0, trans=0):
    if i == n:
        return 1
    else:
        rt = 0
        for j in range(n):
            col = 1 << j
            diag = 1 << (i - j + n - 1)
            tran = 1 << (i + j)
            if (col & cols) == 0 and (diag & diags) == 0 and (tran & trans) == 0:
                rt += calc(n, i+1, cols | col, diags | diag, trans | tran)
        return rt
​
if __name__ == '__main__':
    t = time.time()
    print(calc(13))
    prin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值