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;
}
相关推荐
Old Uncle Tom29 分钟前
银行用户画像 -- 金融目标与需求意图
前端·人工智能·金融
游戏开发爱好者832 分钟前
iOS开发IDE有哪些 Xcode 和 快蝎 轻量替代方案
ide·vscode·ios·个人开发·xcode·swift·敏捷流程
IT_陈寒34 分钟前
Vue的响应式让我加班到凌晨3点,原来问题出在这
前端·人工智能·后端
东方小月35 分钟前
从0开发一个 Coding Agent(一):前言
前端·人工智能·typescript
恋猫de小郭35 分钟前
Flutter 全新真 3D 实现,用 flutter_scene 能开发一个「我的世界」
android·前端·flutter
ji_shuke1 小时前
远程排查 Web 系统问题:如何导出 HAR 文件协助定位
前端·问题排查
程序员爱钓鱼1 小时前
Rust String 与 &str 详解:字符串所有权、借用与转换
前端·后端·rust
码农学院2 小时前
GEO与SEO协同:从传统搜索到生成式搜索的平滑迁移路径
服务器·前端·python
咩咩啃树皮10 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构