下面的两段代码:
//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多一点。这是为什么啊?这俩语言性能差这么多的吗?
js从类型上来说是弱类型语言(没有强制规定类型),C++是强类型语言(必须申明数据类型);
从语言的编译特性上来说,js是不需要编译进行发布的,而是在执行的时候实时进行解释执行的,而C++可以说是直接编译成机器语言,让机器直接运行的。
也就是从第二点来看,一个程序是依赖另外一套解释程序来进行边翻译边执行,另外一套直接执行,就能看出性能差别了。