node python 速度_为什么python在递归上比node.js慢得多

如果您在Python中使用一个带记忆的fibonacci函数,您将看到它变得更快:import time

beg = time.clock()

def memoize(f):

cache = {}

def decorated_function(*args):

if args in cache:

return cache[args]

else:

cache[args] = f(*args)

return cache[args]

return decorated_function

@memoize

def fib(n):

if n <=2:

return 1

return fib(n-2) + fib(n-1)

var = fib(35)

end = time.clock()

print(var)

print(end - beg)

在javascript中也可以这样做:function memoize( fn ) {

return function () {

var args = Array.prototype.slice.call(arguments),

hash = "",

i = args.length;

currentArg = null;

while (i--) {

currentArg = args[i];

hash += (currentArg === Object(currentArg)) ?

JSON.stringify(currentArg) : currentArg;

fn.memoize || (fn.memoize = {});

}

return (hash in fn.memoize) ? fn.memoize[hash] :

fn.memoize[hash] = fn.apply(this, args);

};

}

var beg = new Date().getTime();

function fib(n)

{

if (n <= 2)

return 1;

return fib(n-2) + fib(n-1);

}

var f = memoize(fib)(35);

var end = new Date().getTime();

console.log(f);

console.log(end - beg);

看起来javascript方面没有性能改进,这往往表明这里已经内置了某种记忆机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值