You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python3循环比Node.js慢数十倍?附测试与优化疑问

O(n²)算法性能测试与Python代码优化

部分读者质疑该测试的合理性,但如果目标是了解O(n²)算法在n=10000或100000时的最低预期运行时间,下述测试完全有效。

JavaScript测试实现

const n = 10000;
const n2 = n * n;

let a = 0;

for (let i = 0; i < n2; i++) {
  a += 3.1;
  a -= 1.01;
  a -= 2.0001;
}

console.log(a);

运行结果

$ time node try.js 
node try.js  0.31s user 0.01s system 98% cpu 0.321 total

耗时约0.32秒。

Python3测试实现

n = 10000
n2 = n * n

a = 0
for i in range(n2):
    a += 3.1
    a -= 1.01
    a -= 2.0001

print(a)

运行结果

$ time python3 try.py
python3 try.py  9.88s user 0.04s system 99% cpu 9.948 total

耗时约9.88秒,JavaScript代码速度是Python3的30倍。

用户提到Python2中可使用xrange(),但Python3的range()是生成器不会生成大数组,疑惑自身操作是否有误,同时希望将Python3代码优化至1秒内。

可行的Python优化方案

  • 改用PyPy解释器:PyPy采用JIT编译技术,对循环密集型代码的优化效果显著,这类简单循环的运行速度可接近JavaScript,能轻松将耗时压到1秒内。
  • 简化循环内计算逻辑:预计算循环内的数值操作,减少循环中的计算步骤:
n = 10000
n2 = n * n

a = 0.0
delta = 3.1 - 1.01 - 2.0001
for i in range(n2):
    a += delta

print(a)
  • 使用NumPy向量化运算:利用NumPy的底层C实现绕过Python循环开销,直接完成批量计算:
import numpy as np

n = 10000
n2 = n * n
delta = 3.1 - 1.01 - 2.0001
a = delta * n2
print(a)

该版本无Python循环,运行时间远低于1秒。

内容的提问来源于stack exchange,提问作者Stefanie Gauss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:15:13