测试一下node和python的递归效率

本文探讨了Python和Node.js在执行斐波那契数列递归计算时的效率差异。测试结果显示,对于45次递归,Node.js的执行时间仅为Python的38.59倍,显示出Node.js在多线程运行的优势。当递归次数增加到50次时,Node.js依然保持快速,而Python的计算时间显著增长。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试纯属无聊

环境介绍:win10,I7

之前做过一些测试,有的node效率很高,有的python效率更高。所以测试不代表什么

先出函数

import time
start=time.time()
def digui(n):
    if n==1 or n==2:
        return 1;
    return digui(n-1)+digui(n-2)

print(digui(45))
end=time.time()
print(start-end)
console.time("x");
function digui(n){
    if(n==1||n==2){
        return 1;
    }else{
        return digui(n-1)+digui(n-2);
    }
}
console.log(digui(45))
console.timeEnd("x");

相同的计算45次

1.python:

结果:1134903170
时间:248秒,约合4分钟

 

2.node

结果:1134903170
时间:6.426秒,是python的38.59倍

 

通过资源监视器我们看到node再执行时是多线程运行的。所以的效率高了很多。

 

后面我又测试了node的50次递归

结果:12586269025
时间:用时1分15.477秒,node再多线程的加持下很快就算出来了,python就比较吃力了,我就没再python看见结果。

 

### Python 使用递归实现 POCO 操作 POCO(Plain Old CLR Object 或 Plain Old Class Object)通常指的是简单的数据对象,在不同编程环境中有着相似的概念。在Python中,可以创建类似的简单类结构,并通过递归来遍历或修改这些对象。 下面是一个使用递归来操作嵌套的POCO样式的Python对象的例子: #### 定义一个简单的POCO风格的数据结构 ```python class Node: def __init__(self, value=None, children=None): self.value = value self.children = children or [] def traverse(node): """递归遍历树形结构""" print(f"Visiting node with value {node.value}") for child in node.children: traverse(child) # 对每个子节点调用traverse函数 ``` 此`Node`类表示了一个基本单元,它可以拥有多个子项形成层次化的树状结构。`traverse`函数则展示了如何利用递归方式访问整个树中的每一个节点[^1]。 为了展示更具体的场景,比如更新所有节点上的某个属性值,这里给出另一个例子: #### 更新所有节点的一个特定字段 ```python def update_values(node, increment=0): """递归地增加节点及其后代的价值""" new_value = node.value + increment if isinstance(node.value, int) else node.value updated_children = [ update_values(child, increment) for child in node.children] return Node(new_value, updated_children) # 创建测试用例 root = Node(1, [ Node(2), Node(3, [Node(4), Node(5)]) ]) updated_root = update_values(root, 10) print(updated_root.value) # 输出应为 11 for c in updated_root.children: print(c.value) # 应分别输出 12 13 # 子级也会被相应调整 ``` 在这个版本里,定义了新的辅助函数 `update_values()` 来递归地改变给定树内各节点所持有的数值型`value`成员变量。这说明了怎样基于原始设计模式扩展功能以满足具体需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圈点Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值