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;
}
相关推荐
编程猪猪侠25 分钟前
Tailwind CSS 自定义工具类与主题配置指南
前端·css
qhd吴飞29 分钟前
mybatis 差异更新法
java·前端·mybatis
YGY Webgis糕手之路1 小时前
OpenLayers 快速入门(九)Extent 介绍
前端·经验分享·笔记·vue·web
患得患失9491 小时前
【前端】【vueDevTools】使用 vueDevTools 插件并修改默认打开编辑器
前端·编辑器
ReturnTrue8681 小时前
Vue路由状态持久化方案,优雅实现记住表单历史搜索记录!
前端·vue.js
UncleKyrie1 小时前
一个浏览器插件帮你查看Figma设计稿代码图片和转码
前端
谈吐大方的鹏sir1 小时前
SwiftUI-Text组件学习
ios
遂心_1 小时前
深入解析前后端分离中的 /api 设计:从路由到代理的完整指南
前端·javascript·api
你听得到111 小时前
Flutter - 手搓一个日历组件,集成单日选择、日期范围选择、国际化、农历和节气显示
前端·flutter·架构
风清云淡_A1 小时前
【REACT18.x】CRA+TS+ANTD5.X封装自定义的hooks复用业务功能
前端·react.js