测试结果
粗略测试耗时结果如下,严格测试可参考:
- 综合内存、执行耗时的可视化排名goodmanwen.github.io/Programming...
- 各个语言执行耗时等数据benchmarksgame-team.pages.debian.net/benchmarksg...
语言 | 100w次斐波拉契计算(n=30)耗时 |
---|---|
nodejs 24 | 75ms |
c | 71ms |
swift 5.9 | 119ms |
chrome 134 | 35ms |
- js快得离谱,怀疑引擎有优化;
- 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;
}