为什么js和c++代码差不多,内存和空间差别却差很多?

下面的两段代码:

//Javascript
var num = readline();
var s = readline().split(' ');
var b = [];

if(num % 2 === 0){
    for(var i = s.length- 1,k=0;i>0;i -= 2,k++){
        b[k]=s[i];
    }
    for(var i = 0,k = b.length;i< s.length-1;i +=2,k++){
        b[k]=s[i];
    }
}else{
    for(var i = s.length-1,k=0;i>-1;i -= 2,k++){
        b[k]=s[i];
    }
    for(var i = 1,k = b.length;i< s.length;i +=2,k++){
        b[k]=s[i];
    }
}

var b = b.join(' ');

print(b);
//C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int main()
{
    long long n;
    while(cin>>n)
    {
        if(n == 1)
        {
            cout<<"1"<<endl;
            return 0;
        }
        vector<int> a(n);
        for(long long i=0;i<n;++i)
            cin>>a[i];
 
        if(n%2==0)
        {
            for(long long i=n-1;i>=0;i-=2)
            {
                cout<<a[i]<<" ";
            }
            cout<<a[0];
            for(long long i=2;i<n-1;i+=2)
                cout<<" "<<a[i];
        }
        else
        {
            for(long long i=n-1;i>=0;i-=2)
            {
                cout<<a[i]<<" ";
            }
            cout<<a[1];
            for(long long i=3;i<n-1;i+=2)
                cout<<" "<<a[i];
        }
        cout<<endl;
    }
    return 0;
}

两个代码的时间复杂度都差不多吧,但是再测大数的时候,差异却特别大,js耗时700多毫秒,内存占用20000K以上,而c++只要100多毫秒,内存占用更是只有3000K多一点。这是为什么啊?这俩语言性能差这么多的吗?

阅读 2.8k
1 个回答

js从类型上来说是弱类型语言(没有强制规定类型),C++是强类型语言(必须申明数据类型);
从语言的编译特性上来说,js是不需要编译进行发布的,而是在执行的时候实时进行解释执行的,而C++可以说是直接编译成机器语言,让机器直接运行的。

也就是从第二点来看,一个程序是依赖另外一套解释程序来进行边翻译边执行,另外一套直接执行,就能看出性能差别了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题