您的位置:首页 > Web前端 > Node.js

性能测试 lua VS java VS nodejs VS c++

2015-09-16 14:07 701 查看
主机: 酷睿i5-4200U, 4G DDR3

求每秒执行开平方次数

测试结果:

>>>=== chrome 45.0.2454.85 m: (浏览器因为还要执行其他的渲染操作所有降低了js的效率)

1s Math.sqrt do 436849 // 解释: 1 秒 执行 sqrt() 函数的次数 436849 次

1s Math.sqrt do 432051

1s Math.sqrt do 430482

1s Math.sqrt do 418521

1s Math.sqrt do 431072

1s Math.sqrt do 428187

1s Math.sqrt do 436510

1s Math.sqrt do 431959

1s Math.sqrt do 427543

1s Math.sqrt do 428449

avg 1s use 430162.3 counts // 解释 平均 1s 执行 43万次

>>>=== node 0.12:

1s Math.sqrt do 8054416

1s Math.sqrt do 8158594

1s Math.sqrt do 8331699

1s Math.sqrt do 8255630

1s Math.sqrt do 8331886

1s Math.sqrt do 8283210

1s Math.sqrt do 8135069

1s Math.sqrt do 8268996

1s Math.sqrt do 8316290

1s Math.sqrt do 8210444

avg 1s use 8234623.4 counts

>>>=== node 4.0: (相比前一个版本, 效率确实提高了呢, v8每次更新都有很大变化啊)

1s Math.sqrt do 8758179

1s Math.sqrt do 8309689

1s Math.sqrt do 8874033

1s Math.sqrt do 8808449

1s Math.sqrt do 8852651

1s Math.sqrt do 8835441

1s Math.sqrt do 8793725

1s Math.sqrt do 8846457

1s Math.sqrt do 8817173

1s Math.sqrt do 8813811

avg 1s use 8770960.8 counts 8百万

>>>=== Lua 5.2.3 (lua出乎意料的慢, 如果直接调用math.sqrt, 速度可以提升80万次)

1s Math.sqrt do 3045604

1s Math.sqrt do 3098687

1s Math.sqrt do 3041617

1s Math.sqrt do 3029663

1s Math.sqrt do 3112521

1s Math.sqrt do 3004033

1s Math.sqrt do 3037430

1s Math.sqrt do 3098603

1s Math.sqrt do 3042392

1s Math.sqrt do 3054487

avg 1s use 3056503.7 counts 3百万

>>>=== c++ vs2012: (王道!)

1s Math.sqrt do 50864476

1s Math.sqrt do 53466949

1s Math.sqrt do 53503141

1s Math.sqrt do 53798758

1s Math.sqrt do 53991526

1s Math.sqrt do 53135591

1s Math.sqrt do 54014958

1s Math.sqrt do 53591906

1s Math.sqrt do 53595438

1s Math.sqrt do 53486753

avg 1s use 53344949 counts 5千万

>>>=== Java build 1.7.0_80-ea-b05: (java 真的很快!)

1s Math.sqrt do 45902963

1s Math.sqrt do 47347316

1s Math.sqrt do 47736195

1s Math.sqrt do 47530654

1s Math.sqrt do 47538389

1s Math.sqrt do 46810018

1s Math.sqrt do 35977214

1s Math.sqrt do 37011350

1s Math.sqrt do 46313556

1s Math.sqrt do 47359388

avg 1s use 44952704 counts 4千万

真是一目了然的性能测试呢!!

下面是测试用的代码:

-- ==== Lua =================================================================
a = os.clock();
b = 0;
c = 0;
avg = 0;

fn = function()
return math.sqrt(35155412);
end

while c<10 do
fn();
b=b+1;
if (os.clock() - a >= 1) then
a = os.clock();
print('1s Math.sqrt do', b);
avg = avg+b;
c = c+1;
b = 0;
end
end

print('avg 1s use', avg/c, 'counts');


// ==== JavaScript ==========================================================
var a = Date.now();
var b = 0;
var c = 0;
var avg = 0;

var fn = function() {
return Math.sqrt(35155412);
};

while (c<10) {
fn();
b++;
if (Date.now() - a >= 1000) {
a = Date.now();
console.log('1s Math.sqrt do', b);
avg += b;
++c;
b = 0;
}
}

console.log('avg 1s use', avg/c, 'counts');


// ==== Java =================================================================
public class M {

public static void main(String[] args) {
long a = System.currentTimeMillis();
int b = 0;
int c = 0;
int avg = 0;

while (c<10) {
fn();
b++;
if (System.currentTimeMillis() - a >= 1000) {
a = System.currentTimeMillis();
log("1s Math.sqrt do ", b);
avg += b;
++c;
b = 0;
}
}

log("avg 1s use ", avg/c, " counts");
}

public static double fn() {
return Math.sqrt(35155412);
}

public static void log(Object ...a) {
StringBuilder buf = new StringBuilder();
for (int i=0; i<a.length; ++i) {
buf.append(a[i]);
}
System.out.println(buf.toString());
}
}


// ==== C++ ===================================================================
#include <iostream>
#include <time.h>
#include <math.h>

using namespace std;

float fn() {
return sqrt(35155412);
}

int main()
{
time_t a, curr;
int b = 0;
int c = 0;
int avg = 0;

time(&a);

while (c<10) {
fn();
b++;
time(&curr);
if (curr > a) {
time(&a);
cout << "1s Math.sqrt do " << b << endl;
avg += b;
++c;
b = 0;
}
}

cout << "avg 1s use " << avg/c << " counts" << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: