如何将JS代码的性能与其等价的Python代码进行比较?

2024-04-26 23:33:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我在写代码,用迭代法求第n个斐波那契数。我用JavaScript和Python编写代码。代码基本相同,只是语言不同。 我在JavaScript代码中使用了Date.now()来计算代码运行所需的时间,对于Python,我使用了datetime.datetime.now()

我在最后提供了这两个代码。

我有两个问题:

  • 为什么在浏览器中使用console.time并运行代码比在Node.js中运行相同代码并用Date.now替换console.time的时间要少得多
  • 为什么JavaScript代码的两个变体都比Python变体慢得多

代码

JavaScript

Node.js(Date.now)
const fn = (n) => {
    let current = 0
    let next = 1
    for (let i = 0; i < n-1; i++) {
      [current, next] = [next, current + next]
    }
    return next
  }
  
  var d1 = Date.now()
  // milli sec
  console.log(fn(27))
  var d2 = Date.now()
  console.log(d2 - d1)
  
浏览器(控制台时间)
const fn = (n) => {
    let current = 0
    let next = 1
    for (let i = 0; i < n-1; i++) {
      [current, next] = [next, current + next]
    }
    return next
  }

console.time('Fib');
fn(27)
console.timeEnd('Fib');

Python

def fibIter(n):
    if n < 2:
        return n
    fibPrev = 1
    fib = 1
    for num in range(2, n):
        fibPrev, fib = fib, fib + fibPrev
    return fib

import datetime

begin_time = datetime.datetime.now()
fibIter(27)
# hour:minute:second:microsecond
print(datetime.datetime.now() - begin_time)


我读过Node.js比Python快,但这似乎不是真的。我错过了什么。因为找不到答案而感到如此愚蠢