JS执行速度似乎并不比Swift或者C语言慢

测试结果

粗略测试耗时结果如下,严格测试可参考:

  1. 综合内存、执行耗时的可视化排名goodmanwen.github.io/Programming...
  2. 各个语言执行耗时等数据benchmarksgame-team.pages.debian.net/benchmarksg...
语言 100w次斐波拉契计算(n=30)耗时
nodejs 24 75ms
c 71ms
swift 5.9 119ms
chrome 134 35ms
  1. js快得离谱,怀疑引擎有优化;
  2. swift很慢,是因为Int.random很慢,去掉Int.random后与c语言耗时接近

测试代码

JS

js 复制代码
function fib(n){
    let n_0=0;
    let n_1=1;
    for(let i=1;i<=n;i++) {
        let tmp = n_0+n_1;
        n_0=n_1;
        n_1=tmp;
    }
    return n_1;
}

let s = Date.now()

let n=0;

console.log("fib 30 = ",fib(30));
console.log("fib 29 = ",fib(29));

for(let i=0;i<1000000;i++) {
    let num = Math.floor(Math.random()*3);
    
    n=n+fib(30)-1346269+num;
}

console.log("n=",n," time=", Date.now()-s);

Swift

swift 复制代码
import Dispatch

func fib(n:Int)->Int{
    var n_0=0
    var n_1=1
    for _ in 2...n {
        let tmp = n_0+n_1
        n_0=n_1
        n_1=tmp
    }
    return n_1
}

print("fib 30 = ",fib(n:30));

var s=DispatchTime.now()

var n=0;

for _ in 0...1000000 {
    n=n+fib(n:30)+Int.random(in: 0...3)-1346269
}

print("n=",n," time=",(DispatchTime.now().uptimeNanoseconds-s.uptimeNanoseconds)/1000/1000)

C

c 复制代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int fib(int n){
    int n_0=0;
    int n_1=1;
    for(int i=1;i<=n;i++) {
        int tmp = n_0+n_1;
        n_0=n_1;
        n_1=tmp;
    }
    return n_1;
}

int main(){
    srand(time(NULL)); 
    struct timespec s,e;
    timespec_get(&s, TIME_UTC);

int n=0;

printf("fib 30 = %d\n",fib(30));

for(int i=0;i<1000000;i++) {
    n=n+fib(30) + (rand() % 3) -1346269;
}

timespec_get(&e, TIME_UTC);

printf("n=%d, time=%ldms\n",n,(e.tv_nsec-s.tv_nsec)/1000/1000);
return 0;
}
相关推荐
云浪1 小时前
前端二进制数组完全指南:ArrayBuffer、TypedArray、DataView 一次讲透
前端·javascript
张风捷特烈1 小时前
Flutter 类库大揭秘#02 | path_provider 各平台实现
前端·flutter
铁皮饭盒2 小时前
26年bunjs, elysia+pg一把梭, redis都省了
前端·javascript·后端
lichenyang45314 小时前
Docker 学习笔记(一):为什么需要镜像、容器和仓库?
前端
kyriewen15 小时前
别再对着 TypeScript 报错发呆了:我把 10 个最常见的红色波浪线翻译成了人话
前端·javascript·typescript
IT_陈寒15 小时前
SpringBoot自动配置的坑,我的API突然就404了
前端·人工智能·后端
奇奇怪怪的16 小时前
Embedding 模型 10+ 横向评测
前端
陈广亮16 小时前
Monorepo 从 0 到 1 实操指南 2026 版:pnpm catalogs + Turborepo 2.x + changesets 全链路
前端
子兮曰16 小时前
OpenMontage 深度解剖:你的 AI 编程助手,其实是个视频工作室
前端·后端·ai编程