码迷,mamicode.com
首页 > 编程语言 > 详细

NodeJS和C++的性能比较(转)

时间:2014-12-23 17:22:11      阅读:480      评论:0      收藏:0      [点我收藏+]

标签:

原文地址: http://www.web-tinker.com/article/20374.html

 

  前段时间做了个实验,测试了1E9次的空循环在NodeJS和C++中的执行用时。于是我和小伙伴们瞬间就惊呆了,NodeJS的性能是要逆天吗?虽然我一直都在抱怨v8引擎在各种犄角旮旯的优化做的太恶心了,但无论如何它的基本性能高是不可否定的。
#include <cstdio>
#include <ctime>
int main(void){
  int t=clock();
  for(int i=0;i<1E9;i++);
  printf("%d\n",clock()-t);
  return 0;
}
console.time("test");
for(var i=0;i<1E9;i++);
console.timeEnd("test");

技术分享
  NodeJS是要逆天?速度比C++还快?得到这个结果只是因为C++的编译没有开启最大优化而已。开启最大优化编译之后可以得到
技术分享
  所以C++比NodeJS快是肯定的,但是从这个结果来看并没快多少。很多人就持疑了,测试的循环体中只有一个空语句,是v8引擎把它优化掉了吧?但 要是优化掉了,那一千多毫秒的时间是怎么跑出来的呢?也许这个测试不能说明问题,那我们就来做个实际点的测试,对一个长度为1E6的整型数组排序。这里偷 了个懒,C++直接用了C标准库中的qsort函数,JavaScript用了上一篇中的排序算法。 #include <cstdio>
#include <cstdlib>
#include <ctime>
#define L 1E6
int main(void){
  int *a=new int[L];
  for(int i=0;i<L;i++)a[i]=rand();
  int t=clock();
  qsort(a,L,sizeof(int),[](const void *a,const void *b)->int{
    return *(int*)a-*(int*)b;
  });
  printf("%d\n",clock()-t);
  delete a;
  return 0;
}
function sort(a){
  var s=[0,a.length-1],p=0,l,r,i,j,v;
  while(s.length>p){
    l=i=s[p++],r=j=s[p++],v=a[i];
    while(i<j){
      while(a[j]>=v&&i<j)j--;
      a[i]=a[j];
      while(a[i]<=v&&i<j)i++;
      a[j]=a[i];
    };
    a[i]=v;
    if(i-1>l)s.push(l,i-1);
    if(i+1<r)s.push(i+1,r);
  };
};
var s,i,t;
for(i=0,s=[];i<1E6;i++)s.push(Math.random()*1E6|0);
t=new Date;
sort(s);
console.log(new Date-t);

技术分享
  C++是比NodeJS快,但性能比较通常是用耗时的数量级来衡量的,这两个结果取对数之后基本没什么差异,C++真心没比NodeJS快多少。所以,比起其它一大堆Web编程语言,NodeJS的性能还是非常有优势的。

NodeJS和C++的性能比较(转)

标签:

原文地址:http://www.cnblogs.com/mengxuan/p/4180395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!